选择排序(Selection Sort)---- C 语言学习
所谓的选择排序,指的是把一组杂乱无章的数据按照大小顺序排序,选择排序所采用的方法是:首先找到值最小的元素,然后把这个元素与第一个元素交换,这样,值最小的元素就放到了第一个位置,接着,再从剩下的元素中找到值最小的,把它和第二个元素互换,使得第二个元素放在第二的位置上面,以此类推,直到所有的值由小到大顺序排列为止。
如有以下的数据:
7 5 9 3 2 8
则选择排序的处理过程如下:
-------------
↓ ↓
7 5 9 3 2 8 未排序
-
-------
↓ ↓
2 5 9 3 7 8 第一遍扫描后
-
----
↓ ↓
2 3 9 5 7 8 第二遍扫描后
-
----
↓ ↓
2 3 5 9 7 8 第三编扫描后
-
----
↓ ↓
2 3 5 7 9 8 第四遍扫描后
-
2 3 5 7 8 9 排序完成
来看看程序代码:
#include "stdio.h"
#define NUM 10
void main()
{
int a[NUM], i, j, r, temp;
printf("Please input %d numbers:\n", NUM);
for(i = 0; i < NUM; i++)/*输入数据*/
scanf("%d", &a[i]);
for(i = 0; i < NUM - 1; i ++)/*扫描 NUM - 1 次*/
{
r = i;
for(j = i + 1; j < NUM; j ++)/*在一遍扫描中*/
if(a[j] < a[r])
r = j;
if(r != i)/*互换*/
{
temp = a[i];
a[i] = a[r];
a[r] = temp;
}
}
printf("Now the array after sort:\n");
for(i = 0; i < NUM; i ++)
printf("%5d", a[i]);
printf("\n");
}
来测试一下看看:


浙公网安备 33010602011771号