前言
今天要講另一個排序法。
原理
可以觀看這影片可以知道,當數字跟數字交換時會有兩個原理:
- 當交換的數字比其他的數字小的話則跳過換下一個數字進行對比
- 若是數字看到比自己大的數字時,則自己代替交換的數字,而交換的數字繼續與其他數字比較。
程式
def selection_sort(nlst):
''' 選擇排序 '''
for i in range(len(nlst)-1):
index = i
for j in range(i+1, len(nlst)):
if nlst[index] > nlst[j]:
index = j
if i == index:
pass
else:
nlst[i],nlst[index] = nlst[index],nlst[i]
return nlstcars = ['honda','bmw','toyota','ford']
print("目前串列的內容 = ", cars)
print("使用selection_sort( )由小排到大")
selection_sort(cars)
print("排序串列的結果 = ",cars)
for if else
for i in range(5):
print(“今天第i次問 媽媽回來了嗎”)
if 媽媽回來了 = True:
結束這個迴圈 #結束迴圈的方式else:
print("還沒回家") #假如if沒成立,每次都會跑今天第0次問 媽媽回來了嗎 還沒回家
今天第1次問 媽媽回來了嗎 還沒回家
今天第2次問 媽媽回來了嗎 回家了
for迴圈:依序特定範圍內處理程式
for:範圍內處理程式的問題點
if:但這範圍內的迴圈是True
else:當這範圍內的迴圈是false
我們依照剛剛的for if else 來做一個對比,首先範圍內處理程式的問題點指的是「我們要整理外圈排序的內圈排序」,接下來迴圈裡的true指的是這兩個數字一個大一個小,兩者必須互相交換筆且交換的數繼續跟其他比較,反之,如果數字一個小一個大,則無視數字繼續和其他數字比較,直到結束內圈排序。
首先我們懂了以上這些原理之後,我們再更深入瞭解一些東西,i跟len這兩個東西我們只要知道上面所敘述的原理基本上這兩個東西也可以很快就搞懂的!
i
我們剛剛有知道說選擇排序法就是數字看到比自己大的數字時,則自己代替交換的數字,而交換的數字繼續與其他數字比較,那i就是這樣的原理,在對底的過程中,i就是會再對比過程中對到目前對比過程中最小的數字時,i就會把它記下來,直到所有的數字都對完之後,則比較的數字會跟i進行交換,反之則不換(代表比較的數字是整個長度最小的)。
後記
心累。