【OJ题集】简单选择排序简单介绍

简单选择排序

算法步骤:(来源《数据结构(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;
        }

    }
}

猜你喜欢

转载自blog.csdn.net/smileyan9/article/details/80776475