選擇排序(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...