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 通過迴圈比較重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基...