选择排序
原理如下:
1、 首先假定数组中最大元素的下标为 0 , 即数组中的第一个元素。
2、 通过 for 循环,将第一个元素与剩余元素逐一比较,比较过程中,如:第一个元素大于第二个元素,则更改最大元素的下标为 1,依次类推得到数组中真实的最大元素,将此最大元素放置在数组的最后位置,注意数组中的最大元素的位置已确定,不再更换。
3、 重复上述操作(除去数组中最大元素不参与比较)可以依次确定数组中的第二大、第三大等元素的位置。
4、 直至整个数组都已顺序排列为止。
算法稳定性
选择排序中相同元素的前后顺序会发生改变,所以选择排序是一种非稳定型的排序算法。
Python实现
def choose_sort(lst):
length = len(lst)
for j in range(length):
max_index = 0
for i in range(1, length - j):
if lst[max_index] < lst[i]:
max_index = i
lst[max_index], lst[length - 1 - j] = lst[length - 1 - j], lst[max_index]
return lst
if __name__ == '__main__':
lst = [3, 4, 5, 7, 1, 2, 6, 9, 0]
print(choose_sort(lst))
# [0, 1, 2, 3, 4, 5, 6, 7, 9]