01選擇排序

o蹲蹲o發表於2024-05-07

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.截圖:

01選擇排序

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

相關文章