码迷,mamicode.com
首页 > 编程语言 > 详细

简单选择排序

时间:2015-12-08 22:18:58      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

简单选择排序的基本思想是每一趟在n-i+1(i=1,2,3...n-1)个记录中选取关键字最小的记录作为有序序列的第i个记录

稳定性:简单选择排序是不稳定排序

时间复杂度:最好 O(n^2)  最坏 O(n^2)  平均 O(n^2)

辅助空间:O(1)

 

给定排序要用到的swap函数:

技术分享
void swap(int* a, int* b){
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}
View Code

简单选择排序数组版:

技术分享
/* 简单选择排序 --- 数组版 */
void SelectSort(int* L, int n){
    int minn;
    for (int i = 0; i < n - 1; ++i){
        minn = i;
        for (int j = i + 1; j < n; ++j){
            if (L[j] < L[minn]){
                minn = j; //记录最小值的下标
            }
        }//for(j)
        //将最小值换位到无序区的最前面
        if (minn != i){
            swap(L + i, L + minn);
        }
    }//for(i)
}
View Code

简单选择排序指针版:

技术分享
/* 简单选择排序 --- 指针版 */
/* [head, tail)为左闭右开区间*/
void SelectSort(int* head, int* tail){
    int* minn;
    for (int* p = head; p < tail - 1; ++p){
        minn = p;
        for (int* q = p + 1; q < tail; ++q){
            if (*q < *minn){
                minn = q; //记录最小值的位置
            }
        }//for(q)
        //将最小值换位到无序区的最前面
        if (minn != p){
            swap(minn, p);
        }
    }//for(p)
}
View Code

 

简单选择排序

标签:

原文地址:http://www.cnblogs.com/tommychok/p/5031061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!