簡單選擇排序 | 通俗易懂的理解排序過程

謝謝大家對小白的支持,上週更新的冒泡排序,幾個點贊也是莫大的鼓勵,很開心有朋友留言,說還想看選擇排序和堆排序。

最近在博客的評論區認識了一些並肩奮戰的小夥伴,有朋友說每天都來看我的博客,也有朋友認真實現我的代碼後及時指出錯誤,有朋友也會和我分享他的面經 說是回報我一直的分享~ 這些都是我最初的最初沒想過、也沒想到的。今天,第一次粉絲數量超越了原創數量,評論區也多了很多交流和鼓勵,不再是我一個人不停的寫不停的學。我就是很開心,起初自己寫給自己的博客,竟然發揮着一點點的影響力,認真的付出被大家認真的對待。嘻嘻,謝謝你們。

不要煽情了,說一說選擇排序。


1.1 實現過程

[3,5,4,2,1]從小到大排序,看看選擇排序實現的中間步驟。

在這裏插入圖片描述


1.2 關鍵思路

冒泡排序一樣,簡單選擇排序也是一輪一輪的,每一輪排好一個最值的位置,再不斷縮小比較範圍。

每一輪中,

  1. 設定基準(本例中,以比較範圍內,第一個元素爲基準);
  2. 更新最小值下標
  3. 交換基準與最值的位置(本例中,是選取最小值)。

這樣,每一輪結束後,最小值都被往前排。

下一輪,則縮小範圍,對未排序的區域重複以上過程


1.3 代碼實現

def SelectSort(arr):
    n = len(arr)
    for i in range(0, n):
        min_index = i	# 設定基準
        for j in range(i+1, n):
            if arr[j] <= arr[min_index]:
                min_index = j	#更新最小值下標
        arr[i], arr[min_index] = arr[min_index], arr[i]	# 交換基準與最值的位置
    return arr

1.4 結合代碼和中間過程,再次體會

在這裏插入圖片描述
在這裏插入圖片描述

1.5 評價

  • 每輪操作O(n)次,共O(n)輪,時間複雜度O(n^2)。

  • 額外空間開銷出在交換數據時那一個過渡空間,空間複雜度O(1)。


你們還想看什麼?

❤️ 「更多編程題」

劍指Offer [Python] | 目錄索引

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章