选择排序改进了冒泡排序,每次遍历列表只做一次交换。为了做到这一点,一个选择排序在他遍历时寻找最大的值,并在完成遍历后,将其放置在正确的位置。与冒泡排序一样,在第一次遍历后,最大的项在正确的地方。 第二遍后,下一个最大的就位。遍历 n-1 次排序 n 个项,因为最终项必须在第(n-1)次遍历之后。+
def Selection_Sort(alist):
for fillslot in range(len(alist)-1,0,-1):
init_position = 0
for location in range(1,fillslot+1):
if alist[location] > alist[init_position]:
init_position = location
temp = alist[fillslot]
alist[fillslot] = alist[init_position]
alist[init_position] = temp
alist = [1,2,35,7,8,9,88,0,444,3]
Selection_Sort(alist)
print(alist)
时间复杂度
最优时间复杂度:O(n2)
最坏时间复杂度:O(n2)
稳定性:不稳定(考虑升序每次选择最大的情况)