Python排序算法之選擇排序
阿新 • • 發佈:2019-03-19
復雜 lec 默認 range 動作 列表 復雜度 分享 最小
選擇排序
選擇排序比較好理解,好像是在一堆大小不一的球中進行選擇(以從小到大,先選最小球為例):
1. 選擇一個基準球
2. 將基準球和余下的球進行一一比較,如果比基準球小,則進行交換
3. 第一輪過後獲得最小的球
4. 在挑一個基準球,執行相同的動作得到次小的球
5. 繼續執行4,直到排序好
時間復雜度:O(n^2). 需要進行的比較次數為第一輪 n-1,n-2....1, 總的比較次數為 n*(n-1)/2
直接上代碼:
def selectedSort(myList):
#獲取list的長度
length = len(myList)
#一共進行多少輪比較
for i in range(0,length-1):
#默認設置最小值得index為當前值
smallest = i
#用當先最小index的值分別與後面的值進行比較,以便獲取最小index
for j in range(i+1,length):
#如果找到比當前值小的index,則進行兩值交換
if myList[j]<myList[smallest]:
tmp = myList[j]
myList[j] = myList[smallest]
myList[smallest]=tmp
#打印每一輪比較好的列表
print("Round ",i,": ",myList)
myList = [1,4,5,0,6]
print("Selected Sort: ")
selectedSort(myList)
Python排序算法之選擇排序