算法原理:

  1. 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置
  2. 然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
  3. 以此类推,直到全部待排序的数据元素的个数为零。

排序算法100个口诀(排序算法10讲)(1)

代码实现(go):

排序算法100个口诀(排序算法10讲)(2)

复杂度

时间复杂度:O(n²)

空间复杂度:O(1)

稳定性:不稳定, 因为无法保证值相等的元素的相对位置不变,例如 [3, 4, 3, 1, 5]这个数组,第一次交换,第一个3和1交换位置,此时原来两个3的相对位置发生了变化。

,