Python排序系列之二 選擇排序

2021-10-23 08:26:55 字數 822 閱讀 9712

def

select_sort

(data_set)

: n =

len(data_set)

for i in

range

(n-1):

# 第i趟

min_ind = i # 記錄最小值的下標

for j in

range

(i+1

, n)

:# 假定初始的最小值的下標為i,則從i+1開始和min_ind的值比較

if data_set[min_ind]

> data_set[j]

: min_ind = j

ifnot min_ind == i:

#如果最小的就是初始假設的i本身,則不需要交換

data_set[i]

, data_set[min_ind]

= data_set[min_ind]

, data_set[i]

if __name__ ==

'__main__'

: li =[37

,6,45

,32,79

,79,93

,57,22

,21,3

,43,28

,85,50

,4,20

,1,23

,98] select_sort(li)

print

(li)

o(n²)

兩層迴圈,和氣泡排序一樣,雖然第二層迴圈的範圍是不斷縮小的,但是總的級別,還是在n²。

經典排序演算法系列之二 選擇排序

2.1基本思想 第i趟排序開始時,當前有序區和無序區分別為r 0.i 1 和r i.n 1 該趟排序則是從當前無序區中選出關鍵字最小的記錄r k 將它與無序區的第乙個記錄r i 交換,使得r 0.i 和r i 1.n 1 分別變為新的有序區和無序區,經過i 1趟排序後,整個表遞增有序。2.2演算法思...

排序系列二 選擇排序

不多說,直接放 選擇排序 selection sort 工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。一共需要比較 n 2 n 2次,在n很大時相當...

排序系列之二 快速排序法

快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 演算法步驟 1 從數列中挑出乙個元素 一般為隊尾最後乙個元素 稱為 基準 pivot 2 通過迴圈比較重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基...