1、什么是选择排序
选择排序是对冒泡排序的改进,在每次遍历列表只做一次交换。它在每次遍历无序区时找到最大的值,并在完成遍历后,把它放在正确的位置。
image.png
2、选择排序的Python实现
def selectionSort(alist):
for fillslot in range(len(alist)-1, 0, -1):
positionofMax = 0
for location in range(1, fillslot+1):
if alist[location] > alist[positionofMax]:
positionofMax = location
temp = alist[fillslot]
alist[fillslot] = alist[positionofMax]
alist[positionofMax] = temp
alist = [54,26,93,17,77,31,44,55,20]
selectionSort(alist)
print(alist)
# [17, 20, 26, 31, 44, 54, 55, 77, 93]
3、选择排序的分析
可以看到选择排序的时间复杂度为O(n^2)跟冒泡排序一样,但是由于交换次数减少,所以选择排序要更快些。例如前面的列表,选择排序只需要交换n-1=8次,而冒泡排序要20次。
网友评论