选择法(排序法):采用2轮循环,外循环是有序后的元素遍历,内循环用于寻找最值。假设最小元素在数组的第0个位置上,从数组的第一个元素开始遍历数组,找出最小的元素分别和数组的第0个位置上的元素分别比较,如果该元素小于第0个元素,则交换该元素,则交换后该元素就是有序的。即每次选择剩余数据中的最值调整到有序部分的后面去。
相关习题:
《C程序设计》(第三版)7.2
《C程序设计》6.2
Solution by Mutoo:
- #include<stdio.h>
- #define MAX 10
- void main()
- {
- int a[MAX];
- int i,j,flag,temp;
- printf("Please input 10 numbers (a b c...):/n");
- for(i=0;i<MAX;i++) scanf("%d",&a[i]); // 输入数据
- for(i=0;i<MAX;i++)
- {
- flag=i; // 当前位置
- for(j=i;j<MAX;j++)
- if(a[j]<a[flag]) flag=j; // 遍历搜索未排序数部分的最小值
- temp=a[i]; // 将其替换到当前指定的位置(这里无须再比较)
- a[i]=a[flag];
- a[flag]=temp;
- }
- for(i=0;i<MAX;i++) // 输出已排序数组
- i>0?printf(","):0,printf("%d",a[i]);
- printf("/n");
- }