选择排序

选择排序(select sort):每一趟在n-i+1个记录中选择关键字最小的记录作为序列中的第i个记录。

必须有记录:33  21  45  67  15  24

第一趟结果:15  21  45  67  33  24     //第一趟,选择出最小的数15将第一个数33和15交换位置

第二趟结果:15  21  45  67  33  24     //第二趟,由于最小的数就是21本身,不用改变位置,下面的以此类推

第三趟结果:15  21  24  67  33  45

第四趟结果:15  21  24  33  67  45

第五趟结果:15  21  24  33  45  67

选择排序的实际复杂度为O(n^2)

C++实现代码:

//选择排序 gavin 2012-3-25
void mySelectSort(int* arr, int len)
{
    for (int i = 0; i < len - 1; i++) //扫描的次数
    {
        int mmin = arr[i]; //初始化当前选择的最小值
        int mminloc = i;  //初始化当前最小值的位子
        for (int j=i+1; j< len;j++)  //循环查找从i到len-1的记录中最小的一个,以及最小值的位子
        {
            if (arr[j] < mmin)
            {
                mmin = arr[j];
                mminloc = j;
            }
        }
        if (mminloc != i)
        {
            int temp = arr[i];
            arr[i] = arr[mminloc];
            arr[mminloc] = temp;
        }
    }
}
阅读更多
文章标签: c
个人分类: 基础知识
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

选择排序

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭