概念
问题描述
给定无序数组,将数组按从小到大的顺序排列。
算法思想
首先找到数组中最小的元素,其次,将它和数组的第一个元素交换位置(如果第一个元素最小那么它就和自己交换)。接着,在剩下的元素中找出最小元素,将它与数组的第二个元素交换位置。重复上述过程,直到将整个数组排序。
运用递归的思想,核心部分是将数组中最小的元素取出,再把这个元素排除,数组剩余部分进行递归。
图解
代码实现
clojure
1 | (defn selection-sort [items] |
java
1 | public int[] selectionSort(int[] a) { |
特点
运行时间和输入无关
无论输入的数组是否有序,选择排序都会一遍一遍遍历数组去选择出最小的元素
数据移动最少
每次交换都会改变两个位置的值
参考文档
《算法》