【算法基础】选择排序

来源:互联网 发布:冰上的尤里知乎 编辑:程序博客网 时间:2024/05/18 22:45

选择排序的思想是,每轮从数组Array[N]中判断得出最小的值排在前面,数组最多在循环N-1轮之后有序。

例如{3,2,4,5,1}

第一轮,3作为key,与后面4个数字比较
2比3小,成为新的最小值。
随后继续往后对比,2比4、5小,最后1比2小,因此最小值变成1,将1和本轮的key(3)位置交换。
确定本轮最小值为1,1和3位置交换,进入下一轮
结果:{1,2,4,5,3}

第二轮,2作为key,与后面3个数字比较
2比4、5、3都要小,因此本轮数组元素位置不变
结果:{1,2,4,5,3}

第三轮,4作为key,与后面2个数字比较
4比5小,但3比4小,于是交换4和3的位置
结果:{1,2,3,5,4}

第四轮,5作为key,与后面1个数字比较
5比4小,交换位置。完成排序
结果:{1,2,3,4,5}

Java实现:

static int[] selectionSort(int[] array) {        //从首位开始作为key,每轮的key为后一位,每次选出本轮最小的数字        for (int index = 0; index < array.length; index++) {            int key = array[index];            int minIndex = index;            //key与后面的剩余的数字比较,找到最小的数字            for (int k = index + 1; k < array.length; k++) {                if (array[k] < key) {                    key = array[k];                    minIndex = k;                }            }            //将本轮最小数字与key做交换            if (index != minIndex) {                int tmp = array[index];                array[index] = key;                array[minIndex] = tmp;            }        }        return array;    }
原创粉丝点击