1.方法
将待排数组分为已排区间和未排区间,初始已排区间为空,每次从未排区间找一个最小值,添加到已排区间末尾。
2.示例
3.代码
def selection_sort(nums):
n = len(nums)
if n <= 1:
return nums
# 每次找一个最小值,因此找n-1个就够了,最后剩的一个一定是最大的
for i in range(n-1):
# 初始化最小值位置为未排区间第一个
minPos = i
# 遍历未排区间,找到最小值位置
for j in range(i,n):
if nums[j] < nums[minPos]:
minPos = j
# 将未排区间第一个位置和最小值位置的数进行交换
tmp = nums[i]
nums[i] = nums[minPos]
nums[minPos] = tmp
return nums