选择排序
工作原理:在一组数据中,从中选出最小(或最大)的一个元素,存放在序列的起始位置,直到数据全部排完。
例:有一组数据:3,0,1,8,7,2,9,用选择排序将它们由小到大排列。
#include <stdio.h>
int main(int argc, const char * argv[]) {
int num[7] = {3,0,1,8,7,2,9};
for (int j = 0; j<7; j++){
printf("%d ",num[j]);}
printf("\n");
for (int j = 0; j<7; j++) {
//定义一个变量用来临时保存i指向的那个值
int min = num[j];
for (int i = j+1; i<7; i++) {
if (min>num[i]) {
int temp = min;
min = num[i];
num[i] = temp;
}
}
//将这一次比较得到的最小值保存到0的位置
num[j] = min;
printf("%d ",num[j]);
}
printf("\n");
return 0;
}
分析:在此例中,第一次先将最小的数0,放在第一位上,(将数字3,与数字0交换位置);第二次将第二小的数1选出来,与此时在二位置的数字3交换位置(数字1与数字3交换位置);......直到比较到最大的数字,完成此次排序。