Python 經典排序之選擇排序

2021-09-25 15:19:25 字數 1394 閱讀 2895

選擇排序(selection sort)

list=[4,3,1,2,5]

n=len(list) #陣列長度

print('列表長度為:%d'%(n))

print("-----開始選擇排序-------")

print('\n')

for i in range(0,n):

print('當前是第%d輪排序'%(i))

for j in range(i+1,n):

print('當前內部是第%d輪排序'%(j))

if list[i]>list[j]:

print('判斷%d>%d'%(list[i],list[j]))

list[i],list[j]=list[j],list[i]

print(list)

else:

print('判斷%d>%d'%(list[i],list[j]))

print('不滿足')

print('當前排序',list)

print('\n')

print("排序結束")

print(list)

執行結果:

列表長度為:5

-----開始選擇排序-------

當前是第0輪排序

當前內部是第1輪排序

判斷4>3

[3, 4, 1, 2, 5]

當前內部是第2輪排序

判斷3>1

[1, 4, 3, 2, 5]

當前內部是第3輪排序

判斷1>2

不滿足當前內部是第4輪排序

判斷1>5

不滿足當前排序 [1, 4, 3, 2, 5]

當前是第1輪排序

當前內部是第2輪排序

判斷4>3

[1, 3, 4, 2, 5]

當前內部是第3輪排序

判斷3>2

[1, 2, 4, 3, 5]

當前內部是第4輪排序

判斷2>5

不滿足當前排序 [1, 2, 4, 3, 5]

當前是第2輪排序

當前內部是第3輪排序

判斷4>3

[1, 2, 3, 4, 5]

當前內部是第4輪排序

判斷3>5

不滿足當前排序 [1, 2, 3, 4, 5]

當前是第3輪排序

當前內部是第4輪排序

判斷4>5

不滿足當前排序 [1, 2, 3, 4, 5]

當前是第4輪排序

當前排序 [1, 2, 3, 4, 5]

排序結束

[1, 2, 3, 4, 5]

這裡起始位置每次迴圈都可以確定乙個數,所以內部迴圈依次減一。

經典排序之 選擇排序

選擇排序和氣泡排序一樣,也是時間複雜度為o n 2 的排序。陣列 5 6 3 1 8 7 2 4,以從小到大排序為例 1 先找出從0到n 1個數中的最小數,將它與0位上的數交換 結果是1 5 6 3 8 7 2 4 2 再從1到n 1中的數找到最小,將它與1位上的數交換 3 類似一直迴圈到只剩下乙個...

經典排序之選擇排序

選擇排序 基本思想 選擇排序演算法採用的方法比較直觀 通過在待排序子表中完整地比較一遍以確定最大 小 元素,並將元素放在子表的最前 後 面。時間複雜度 o n 2 穩定性分析 該演算法是不穩定排序,因為關鍵字相同的元素在排序過程中可能會交換次序。例如,對資料表 3,3,2 排序時,由於要將第乙個3與...

經典排序之選擇排序

include int main length a.length length 10 printf before ordered n for i 0 i length i printf d a i printf n n for i 0 i length i if index i printf the...