实现原理

找到数组中第一小的元素,和第一元素交换位置。再在剩余的元素中找到第二小的元素和第二个元素交换位置。以此类推,直到整个数组排序。

效率分析

对于每一次排序都需和未排序的元素进行比较一遍。所以需要比较N(N - 1)/2次。每个元素最后都需要进行交换一次。共需交换N次。
时间复杂度为 N

代码实现

  1. func sort(a []int) {
  2. N := len(a)
  3. for i := 0; i < N; i++ {
  4. min := i
  5. for j := i + 1; j < N; j++ {
  6. if less(a[j], a[min]) {
  7. min = j
  8. }
  9. }
  10. exch(a, i, min)
  11. }
  12. }