C语言 | 选择法排序

例60:C语言实现用选择法对10个整数排序。解析:选择排序思路以下,设有10个元素a[1]~a[10],将a[1]与a[2]~a[10],若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操做。若a[2]~a[10]中有一个以上比a[1]小,则将其中最大的一个,与a[1]交换,此时a[1]中存放了10个中最小的数。依次类推,共进行9轮比较,a[1]~a[10]就已按由小到大的顺序存放了。 总体代码逻辑为了让读者更加清晰,小林这里分为四部分:第一部分 键盘输入10个数:for(i=1;i<=10;i++)//依次键盘录入10个数据   {     printf("array[%d]=",i-1);//数组下标从0开始     scanf("%d",&array[i]);   }第二部分 输出键盘录入的10个数:for(i=1;i<=10;i++)//将键盘录入的10个数原样输出   {     printf("%5d",array[i]);   }第三部分 排序逻辑:for(i=1;i<=9;i++)   {     min=i;//把第一个数做为最小的     for(j=i+1;j<=10;j++)     {       if(array[min]>array[j])//判断大小,小的为min       {         min=j;       }     }       temp=array[i]; //大小交换       array[i]=array[min];       array[min]=temp;   }第四部分 排序后的10个数:for(i=1;i<=10;i++)//输出排序后的10个数   {     printf("%5d",array[i]);   }源代码演示:#include<stdio.h>//头文件 int main()//主函数 {   int i,j,min,temp,array[11];//定义整型变量和数组   printf("输入数据:\n");//提示语句   for(i=1;i<=10;i++)//依次键盘录入10个数据   {     printf("array[%d]=",i-1);//数组下标从0开始     scanf("%d",&array[i]);   }   printf("\n");//换行   printf("原样输出:\n");//提示语句   for(i=1;i<=10;i++)//将键盘录入的10个数原样输出   {     printf("%5d",array[i]);   }   printf("\n");//换行   for(i=1;i<=9;i++)   {     min=i;//把第一个数做为最小的     for(j=i+1;j<=10;j++)     {       if(array[min]>array[j])//判断大小,小的为min       {         min=j;       }     }       temp=array[i]; //大小交换       array[i]=array[min];       array[min]=temp;   }   printf("排序输出:\n");//提示语句   for(i=1;i<=10;i++)//输出排序后的10个数   {     printf("%5d",array[i]);   }   printf("\n");//换行   return 0;//主函数返回值为0 }编译运行结果以下:输入数据: array[0]=1 array[1]=4 array[2]=7 array[3]=9 array[4]=4 array[5]=3 array[6]=7 array[7]=9 array[8]=5 array[9]=3 原样输出:     1    4    7    9    4    3    7    9    5    3 排序输出:     1    3    3    4    4    5    7    7    9    9 -------------------------------- Process exited after 8.036 seconds with return value 0 请按任意键继续. . .
相关文章
相关标签/搜索