2.1 选择排序步骤

    1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;
    1. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
    1. 以此类推,直到所有元素均排序完毕。


2.2 选择排序图解

2. 选择排序 - 图1

2.3 选择排序python代码

  1. def selection_sort(alist):
  2. n = len(alist)
  3. # 需要进行n-1次选择操作
  4. for i in range(n - 1):
  5. # 记录最小位置
  6. min_index = i
  7. # 从i+1位置到末尾选择出最小数据
  8. for j in range(i + 1, n):
  9. if alist[j] < alist[min_index]:
  10. min_index = j
  11. # 如果选择出的数据不在正确位置,进行交换
  12. if min_index != i:
  13. alist[i], alist[min_index] = alist[min_index], alist[i]
  14. alist = [54, 226, 93, 17, 77, 31, 44, 55, 20]
  15. selection_sort(alist)
  16. print(alist)

2.4 选择排序的时间复杂度

  • 最优时间复杂度:O(n)
  • 最坏时间复杂度:O(n)
  • 稳定性:不稳定(考虑升序每次选择最大的情况)