选择排序(Selection sort)是一种简单直观的排序算法,它的工作原理是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,知道全部待排序的数据元素排完。
算法基本思想:
n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果
算法分析:
(1) 关键字比较次数
在第i趟排序中选出最小关键字的记录,需要做n-i次比较,因此总的比较次数为n(n-1)/2=o(n^2)
(2) 记录移动次数
初始文件为正序时,移动次数为0
文件初态为反序时,每趟排序均要执行交换操作,总的移动次数最大值为3(n-1)
平均时间复杂度为 O(n^2)
(3)稳定性:不稳定
def SelectSort(lists):
count=len(lists)
for i in range(0,count):
for j in range(i+1, count):
if lists[i] > lists[j]:
lists[i] , lists[j] = lists[j] , lists[i]
print("===========")
print(i,j)
print(lists)
if __name__ == "__main__":
lists = [3, 5, 4, 2, 1, 6]
print(lists)
SelectSort(lists)