永发信息网

C语言如何从大到小排序呢?

答案:6  悬赏:40  手机版
解决时间 2021-04-04 15:40
  • 提问者网友:一抹荒凉废墟
  • 2021-04-04 10:32
C语言如何从大到小排序呢?
最佳答案
  • 五星知识达人网友:纵马山川剑自提
  • 2021-04-04 12:04
你说的这么多变量可以通过一个数组来存储,排序算法可以用比较常规的冒泡算法:

1比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3针对所有的元素重复以上的步骤,除了最后一个。
4持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码

#include
#define N 5
int main()
{
int a[N];
int i;
int j;
int temp;
printf("请输入5个数");
for(i=0;i<=N-1;i++)
{
scanf("%d",&a[i]);

}
for(j=1;j<=N-1;j++)
for(i=0;i<=N-j-1;i++)
{
if(a[i]<=a[i+1])
{
temp=a[i+1];
a[i+1]=a[i];
a[i]=temp;
}
}

for(i=0;i<=N-1;i++)
printf("%d ",a[i]);

}
变量数量可以用通过改变N来改变追问采纳你,是因为你比其他人更详细,因为你看仔细看了我的问题。
全部回答
  • 1楼网友:掌灯师
  • 2021-04-04 16:48
http://blog.csdn.net/hguisu/article/details/7776068
别人的博客,借来用用。
  • 2楼网友:街头电车
  • 2021-04-04 16:26
将a,b,c,d,e,f,j........都放到一个数组当中,之后再用八大排序算法中的某一种进行排序即可,如冒泡排序,快速排序,插入排序等
  • 3楼网友:你哪知我潦倒为你
  • 2021-04-04 15:08
#include
//
void BubbleSort(int a[], int n)
{
    register int i,j,t;
    for (j = 0;j         for (i = 0;i            if(a[i]                t=a[i];a[i]=a[i+1];a[i+1]=t;
            }
        }
    }
}
//
void print(int a[],int n){
    for(int i=0;i        printf("%d ",a[i]);
    printf(" ");
}
//
int main()
{
    int a[10]={88,78,89,77,67,90,99,75,66,56};
    print(a,10);
    BubbleSort(a,10);
    print(a,10);
    return 0;
}追问恩!?点注释也没有呀,
  • 4楼网友:我住北渡口
  • 2021-04-04 14:10
用数组
#include
int main(void)
{
int a,b,i;shuzu[100];
for(i=0;i<100;i++)
{
scanf("%d",shuzu[i]);
}
for(a=0;a<99;a++)
{
for(b=0;b<100;b++)
{
if(shuzu[a] shuzu[a] = shuzu[b];
}
}
for(i=0;i<100;i++)
{
printf("%d\n",shuzu[i]);
}
return 0;
}
  • 5楼网友:街头电车
  • 2021-04-04 13:29

给你提供几个比较简单的算法思路。
首先纠正一下,你要排序的对象不要存在单个变量里,要存在数组里,这样才能用循环的方式取用。
插入排序

如果你打过牌,这种排序你就一定能理解。从未排序的部分取出一个元素来,然后插入到已经排好序的部分。就这样一个一个的查入。
  2.选择排序
从未排序的部分选出最大(最小)的一个放在已排好序的部分的最后。然后重复此步骤。
 3.归并排序
排一个很长的序列可能比较麻烦,我就把他们分成两份,把他们分别排好,然后再把他们接起来,接起来就很简单了。而这两个怎么排呢,我再把他们分别分成两个……这就要用到递归了。


总结一下,前两个时间复杂度是平方,后一个是n*logn 。还有很多其他排序方法,其中冒泡排序比较费时但是很好写,如果你不是想知其所以然,直接百度冒泡套用一下就行。
如果想系统的学习算法,推荐你读算法导论,就是那本很厚的。讲的很好。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯