OK,我们继续学习数组的“选择排序”,目的:我们要对10个数值进行比较大小并且从小到大来排序并且将由小到大的顺序输出出来每个数值,
分析,
1.我们要用数组来添加这“10个数值”,因为我们进行一一比较且排序,数组是目前最方便的了,若要使用变量一个一个的去定义,那该有多麻烦。
2.我们要比较这10个数值的大小,考虑一下我们需要比较多少次?首先将第一个与第二个相比较,若第二个小则先进行标记(先不进行交换),看看后面还有木有比它更小的数值,然后拿着这个小的与第三个进行比较,….,比较完一个之后,就开始拿着第二个数值与第三个数值比较,若有比目前第二个数值小的那么先将它进行标记,并用我们标记的(它)去与后面进行比较,看看是否还有比它更小的,依次这样比较,为了方便大家的理解,我从网上找来了一张gif图,
3.最后用循环将我们排列好的数据依次从下标为0-9输出出来
代码如下:我原来将 j=i+1 换为 j=++i,发现不行,目前我也不知道是什么原因,,,若有同学知道的话,请评论留下答案!谢谢!
#include<stdio.h> int main() { int a[]={12,65,32,153,45,68,11,74,123,333}; int i,j,n; for(i=0;i<10;i++) //总共10个数,需要比较9次 for(j=i+1;j<10;j++) //我们要拿前一个数和后一个数相比较 if(a[i]>a[j]) { n=a[i]; a[i]=a[j]; a[j]=n; } for(i=0;i<10;i++) printf("%d ",a[i]); return 0; }
代码调试截图如下:
接下来就是“冒泡排序”了,大家准备好了就进入下一页学习,
评论抢沙发