选择排序的介绍
选择排序(Selection sort)是一种直观的排序算法,选择排序的工作原理为 在未排序的序列中找到最大或者最小的元素,放到已排序序列的起始位置,然后继续从未排序的序列中找最大或者最小的元素,放到已排序序列的末尾,以此类推,直到所有元素都排序完毕。选择排序实质上为元素的移动,对有n个元素的表进行排序时,进行的最大的交换次数为n-1。
li = [54,26,93,17,77,31,44,55,20]
def selection_sort(li):
n = len(li) # 未排序列表的长度
for i in range(n-1):
min_index = i # 元素的索引值
for j in range(min_index,n):
if li[j] < li[min_index]:
min_index = j
li[i],li[min_index] = li[min_index],li[i]
selection_sort(li)
print(li) # 此时输出的为[17,20,26,31,44,54,55,77,93]
选择排序在最小值重复时,为稳定的排序算法,在最大值重复时,为不稳定的排序算法。
选择排序的时间复杂度为O(n^2)