用选择法对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[i]) 与a[1]交换,此时a[1]中存放了10个数中最小的一个
第二轮将a[2]与a[3]-a[10]进行比较,将剩下9个数中的最小的一个a[i]与a[2]进行交换
此时a[2]中存放了10个数中第二小的一个数,依次类推,共计进行9轮比较,就会排好序了
#include<stdio.h>
int main()
{
int i, j, min, temp, a[10];
for (i = 1; i <=10; i++)
{
printf("a[%d]= ", i);
scanf("%d", &a[i]);//输入10个数
}
printf("\n");
printf("the orginal numbers :\n");
for (i = 1; i <=10; i++)
printf("%5d", a[i]);
printf("\n");
for (i = 1; i <= 9; i++)
{
min = i;
for (j = i + 1; j <= 10; j++)
if (a[min] > a[j]) min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
printf("the sorted numbers :\n");
for (i = 1; i <= 10; i++)
printf("%5d", a[i]);
printf("\n");
return 0;
}