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比较相邻的元素。如果第一个比第二个大,就交换他们两个。
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;
}追问恩!?点注释也没有呀,
//
void BubbleSort(int a[], int n)
{
register int i,j,t;
for (j = 0;j
}
}
}
}
//
void print(int a[],int n){
for(int i=0;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;
}
#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]
}
}
for(i=0;i<100;i++)
{
printf("%d\n",shuzu[i]);
}
return 0;
}
- 5楼网友:街头电车
- 2021-04-04 13:29
给你提供几个比较简单的算法思路。
首先纠正一下,你要排序的对象不要存在单个变量里,要存在数组里,这样才能用循环的方式取用。
插入排序
如果你打过牌,这种排序你就一定能理解。从未排序的部分取出一个元素来,然后插入到已经排好序的部分。就这样一个一个的查入。
2.选择排序
从未排序的部分选出最大(最小)的一个放在已排好序的部分的最后。然后重复此步骤。
3.归并排序
排一个很长的序列可能比较麻烦,我就把他们分成两份,把他们分别排好,然后再把他们接起来,接起来就很简单了。而这两个怎么排呢,我再把他们分别分成两个……这就要用到递归了。
总结一下,前两个时间复杂度是平方,后一个是n*logn 。还有很多其他排序方法,其中冒泡排序比较费时但是很好写,如果你不是想知其所以然,直接百度冒泡套用一下就行。
如果想系统的学习算法,推荐你读算法导论,就是那本很厚的。讲的很好。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯