1.選擇排序含義
- 每次選擇最小的,放到左側。持續進行。
2.示例程式碼:
def selectionSort(arr):
for i in range(len(arr) - 1):
# 記錄最小數的索引
minIndex = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[minIndex]:
minIndex = j
# i 不是最小數時,將 i 和最小數進行交換
# if i != minIndex:
# arr[i], arr[minIndex] = arr[minIndex], arr[i]
# 交換
arr[i], arr[minIndex] = arr[minIndex], arr[i]
return arr
if __name__ == '__main__':
arr = [3, 6, 1, 2, 4, 5]
print(selectionSort(arr))
3.練習程式碼:
def select_sort(arr):
n = len(arr)
for i in range(n):
min_index = i
for j in range(i,n):
if arr[j] < arr[min_index]:
min_index = j
if arr[i] != arr[min_index]:
arr[i],arr[min_index] = arr[min_index],arr[i]
return arr
if __name__ == '__main__':
nums = [1,4,5,3,2]
print(select_sort(nums))
4.截圖:
5.感悟:
- O(n^2)的複雜度
- 還是,最後加一個這個arr[i]!=arr[min_index]這個判斷更好理解。
6.程式碼思路:
- 每次暫時定一個索引i位置的為最小值,往後進行比較,看是不是最小值。是的話,就更新索引,最後這一輪拿到的就是最小值。進行交換。
7.參考資料:
- https://www.runoob.com/w3cnote/selection-sort.html
- https://www.bilibili.com/video/BV12P41147to/?spm_id_from=333.999.0.0&vd_source=6176e79b66461eb74da787cb8321925b