简单选择排序
算法步骤:(来源《数据结构(C语言版)》严蔚敏,李冬梅,吴伟民编著 第二版)
1. 设待排序的记录存放在数组r[1……n]中。第一趟从r[1]开始,通过n-1次比较,从n个记录中选出关键字最小的记录,记为r[l],交换r[1]和r[k]。
2. 第二趟从r[2]开始,通过n-2次比较,从n-1个记录中选出关键字最小的记录,记为r[k],交换r[2]和r[k]。
3. 依次类推,第i趟从r[i]开始,通过n-i次比较,从n-i+1个记录中选出关键子最小的记录,记为r[k],交换r[i]和r[k]。
4. 经过n-1趟,排序完成。
代码如下:
#include <stdio.h> // 简单选择排序 void SelectSort(int ary[],int length){ int i,j,k,temp; for(i=0; i<length; i++){ k = i; // 记录此时的比较对象 // 选择 for(j=i+1; j<length; j++){ // 记录,注意此时不break因为还有可能存在更小的。 if(ary[j]<ary[k]) k=j; } // 交换 if(k!=i){ temp=ary[i]; ary[i]=ary[k]; ary[k]=temp; } } }