排序二(选择排序)

170 阅读1分钟

选择排序的介绍

选择排序(Selection sort)是一种直观的排序算法,选择排序的工作原理为 在未排序的序列中找到最大或者最小的元素,放到已排序序列的起始位置,然后继续从未排序的序列中找最大或者最小的元素,放到已排序序列的末尾,以此类推,直到所有元素都排序完毕。选择排序实质上为元素的移动,对有n个元素的表进行排序时,进行的最大的交换次数为n-1。

li = [54,26,93,17,77,31,44,55,20]

def selection_sort(li):
	n = len(li)  # 未排序列表的长度
    for i in range(n-1):
    	min_index = i # 元素的索引值
        for j in range(min_index,n):
        	if li[j] < li[min_index]:
            	min_index = j
        li[i],li[min_index] = li[min_index],li[i]        
    
selection_sort(li)
print(li)    # 此时输出的为[17,20,26,31,44,54,55,77,93]

选择排序在最小值重复时,为稳定的排序算法,在最大值重复时,为不稳定的排序算法。

选择排序的时间复杂度为O(n^2)