基本思想

每一趟遍历选择出最小的元素,将该元素移动到未排序数组的最前方。

具体实现

  1. from typing import List
  2. def selection_sort(nums: List):
  3. length = len(nums)
  4. for i in range(length-1):
  5. min_idx = i
  6. for j in range(i+1, length):
  7. if nums[j] < nums[min_idx]:
  8. min_idx = j2, nums[min_idx] = nums[min_idx], nums[i]

性能分析

平均时间复杂度:

  • 计算数组长度length选择排序 - 图1
  • 两次循环:选择排序 - 图2
  • 总计:选择排序 - 图3

空间复杂度:

  • 选择排序 - 图4