本文最后更新于 1366 天前,其中的信息可能已经有所发展或是发生改变。
{message type=”info”}用选择排序法对一组数据由小到大进行排序,数据分别为 526、36、2、369、56、45、78、92、125、52。{/message}
实现过程:
(1) 程序中用到T两个 for 循环语句。第一个 for 循环是确定位置的,该位置是存放每次从待排序数列中经选择和交换后所选出的最小数。第二个 for 循环是实现将确定位置上的数与后面待排序区间中的数进行比较的。
(2) 程序代码如下:
#include <stdio.h>
int main()
{
int i,j,t,a[10],min; //定义变量及数组为基本整型
printf("请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]); //从键盘中输入要排序的10个数字
for(i=0;i<10;i++){ //每次先取一个值
min=i;
for(j=i+1;j<10;j++){//将这个值和剩下的数字一个一个比较
if(a[min]>a[j]){
min=j;
}
}
t=a[i]; //交换
a[i]=a[min];
a[min]=t;
}
printf("排序后的顺序是:\n");
for(i=1;i<=10;i++)
printf("%5d", a[i]); //输出排序后的数组
printf("\n");
return 0;
}
运行结果:
请输入10个数:
526 36 2 369 56 45 78 92 125 52
排序后的顺序是:
2 36 45 52 56 78 92 125 369 526
技术要点:
选择排序的基本算法是从待排序的区间中经过选择和交换后选出最小的数值存放到 a[0] 中,再从剩余的未排序区间中经过选择和交换后选出最小的数值存放到 a[1] 中,a[1] 中的数字仅大于 a[0],依此类推,即可实现排序。
