1.选择排序(Selection sort)
选择排序(Selection sort)是一种简单直观的排序算法。
它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
下图为其演示图:
def select_sort(alist):
"""选择排序"""
n = len(alist)
for j in range(n-1): # j:0---n-2
min_index = j
for i in range(j+1, n):
if alist[min_index] > alist[i]:
min_index = i
alist[j], alist[min_index] = alist[min_index], alist[j]
print(alist)
return alist
if __name__ == "__main__":
list1 = [100, 21, 35, 45, 67, 58, 79, 32]
list2 = [233, 324, 333, 212, 309, 780, 525, 378]
select_sort(list1)
select_sort(list2)
2.选择排序的算法复杂度分析
第一次内循环比较N - 1次,然后是N-2次,N-3次,……,最后一次内循环比较1次。
共比较的次数是 (N - 1) + (N - 2) + ... + 1
,求等差数列和,得 (N - 1 + 1)* N / 2 = N^2 / 2
。
舍去最高项系数,其时间复杂度为 O(N^2)
。
选择排序的算法是一种不稳定的算法,性能略微由于冒泡排序。