直接选择排序

来源:互联网 发布:三星s7检查网络连接 编辑:程序博客网 时间:2024/06/16 17:44

3.选择排序


时间复杂度:O(n^2),不稳定。

思想:       初始情况:有序空间为空,无序空间为整个待排空间。

过程:      每次从无序空间取出一个最小值和无序空间第一个元素进行交换,然后缩小无序区间,直到无序区间只剩一个元素


void select_sort(int *array, int length)

{
    int i = 0; 
    int j = 0; 
    int min_index = -1;
    int temp = 0;

    for(i = 0; i < length - 1; ++i){ 
        min_index = i;
        for(j = i + 1; j < length; ++j){
            //找出序列中最小值下标
           if(array[j] < array[min_index]){
               min_index = j;
           }
        }
        if(min_index != i){    //序列第一个值就是最小值,不交换
            temp = array[i];
            array[i] = array[min_index];
            array[min_index] = temp;
        }
    }
    // min_index = i

    //15 2  14  5  7
    //i  j            array[j] < array[min_index]
    //                   min_index = j;
    //
    //2  15 14  5  7
    //   i  j
}
0 0
原创粉丝点击