解题思路:选择法排序
要比较N个数,先把N个数存储到数组中,建立了一个无序的数组。先拿出这个无序数组中的第一个数字,我们假定他就是最大的,(也就是所谓的趟数,外循环控制的),记录他的地址,这里当然是首地址了(I=0对应的地址)然后在剩余的数字里面依次进行比较,选出最大的那个数,记录下他在无序数组里面的地址,然后让我们假定的这个最大的数和在剩余数字里面实际找到的最大的数字进行互换。这样我们就把这组数字里面最大的选出来了。然后在找第二趟,这是我们找剩下这些数字里面最大的。依次进行,就会把数字从大到小的存放的这个数组当中。所谓选择就是拿出一个假定最大,在剩余的里面选择出实际最大的,和他互换,最后达到排序的目的。




注意事项:





参考代码:

#include<stdio.h>

main()

{

int a[10];

int i,j,k,t;

for(i=0;i<10;i++)

scanf("%d",&a[i]); //给数组赋初值

for(i=0;i<9;i++) //控制趟数,10个数字要来9趟

{

k=i; //假设第I个数字最大

for(j=i+1;j<10;j++) /*从剩余的数字里面一个一个比较,看那个比他自己大记下她的位置,人后再拿比较出来大的这个数字在和其他的数字比较,以此类推选出最大的一个,记录下他的位置。*/

if(a[k]<a[j])

k=j;

if(k!=i) /*这一趟里找出了最大的数字位置,和开始认为最大的数字进行交换,这样就把最大的数字选出来了放在数组的首位了,以此类推 整个循环跑了9趟之后就会把数字牌大到小存储在数组当中*/

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

for(i=9;i>=0;i--)

printf("%d\n",a[i]);

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论