共计 728 个字符,预计需要花费 2 分钟才能阅读完成。
{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],依此类推,即可实现排序。

正文完
发表至: C教程
2021-07-08