选择排序Selection Sort
选择排序对冒泡排序进行了改进,保留了其基本的多趟对比的思路,每趟都使当前最大项就位。
但是选择排序对交换进行了削弱,每趟仅进行一次交换,记录最大项的所在位置,最后再跟本趟最后一项进行交换。
选择排序的时间复杂度比冒泡排序稍优。
对比次数不变,还是O(n^2)
交换次数减少,为O(n)
冒泡排序可以看前一节:https://blog.csdn.net/xddwz/article/details/108835585
def selectSort(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
return alist