python演算法與資料結構008 選擇排序

2021-08-26 08:09:46 字數 726 閱讀 4521

選擇排序:在未排序的序列中,找到最大(最小)的數,與第乙個位置的數交換。下次從序列的第二個位置開始,找到最大(最小)的元素,與第二個位置的元素交換。依次類推,得到所有的排序。它的特點是,每次交換資料,至少有乙個數放在了爭取的位置上。

最優的時間複雜度:o(n²)

最壞的時間複雜度:o(n²)

是不穩定排序

def select_sort(data):

data = list(data)

print("排序前的序列:" + str(data))

for i in range(0,len(data)-2):

index = i

for j in range(i+1,len(data)):

if data[index] > data[j]:

index = j

if i != index:

data[i],data[index] = data[index],data[i]

print("排序後的序列:" + str(data))

data=[12,32,32,21,1,2,5,3,54,100,99,72,2]

select_sort(data)

為什麼說選擇排序是不穩定排序?

例如序列: [7,21,7,100]。利用選擇排序,將序列按照降序排列。通過第一輪的比較,第一位的7和最後一位的100交換了順序,所以序列中的兩個7的相對位置被改變。

資料結構與演算法開篇 00

1.有窮性 乙個演算法的操作步驟是有限的,不能是無限的 2.確定性 演算法中的每乙個步驟都要確定的詞,不能含糊不清 3.輸入 演算法具有0個或多個輸入 4.輸出 演算法至少有1個或多個輸出 5.可行性 演算法的每一步都是可行的,也就是說每一步都能夠執行有限的次數完成1.正確性 演算法的執行結果應當滿...

資料結構00

資料結構分為邏輯結構跟物理結構,邏輯結構依賴於物理結構 邏輯結構 集合結構 線性結構 樹形結構 圖形結構 程式的靈魂 演算法 演算法的5大基本特性 輸入 輸出 有窮性 確定性 可行性 其他特性 價效比 效率 事後統計法 比較執行時間 問題 嚴重依賴硬體和執行時環境因素,編寫相應程式 事前分析估算法 ...

python資料結構與演算法

coding utf 8 import sys 使用以下語句將引數的str格式轉換為int格式 l list map int sys.argv 1 split target int sys.argv 2 def binarysearch print l print target left 0 rig...