【圖解資料結構】 一組動畫演示選擇排序

程式設計師吳師兄發表於2019-03-03

前言

由於LeetCode上的演算法題很多涉及到一些基礎的資料結構,為了更好的理解後續更新的一些複雜題目的動畫,推出一個新系列 —–《圖解資料結構》,主要使用動畫來描述常見的資料結構和演算法。本系列包括十大排序、堆、佇列、樹、並查集、圖等等大概幾十篇。

選擇排序

選擇排序是一種簡單直觀的排序演算法,無論什麼資料進去都是 O(n²) 的時間複雜度。所以用到它的時候,資料規模越小越好。唯一的好處可能就是不佔用額外的記憶體空間了吧。

演算法步驟

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

  2. 再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。

  3. 重複第二步,直到所有元素均排序完畢。

來源:github.com/hustcc/JS-S…

演算法演示

【圖解資料結構】 一組動畫演示選擇排序

排序動畫過程解釋

  1. 線性搜尋數列並找到最小值,此時找到了為 2

  2. 將最小值替換為數列中左端的數字,即將 2 與 4 進行交換

  3. 此時 2 已經排序好

  4. 繼續線性搜尋剩餘數列找到最小值,此時找到了 3

  5. 將最小值替換為數列中左端的數字,即將 3 與 4 進行交換

  6. 此時 2 與 3 已經排序好

  7. 繼續線性搜尋剩餘數列找到最小值,此時找到了 4

  8. 如果最小值已經在左端,那麼不執行任何操作,所以此時不做任何處理

  9. 此時 2 、 3 、 4 已經排序好

  10. 重複相同操作,直到所有數字都被排序

程式碼實現

為了更好的讓讀者用自己熟悉的程式語言來理解動畫,筆者將貼出多種程式語言的參考程式碼,程式碼全部來源於網上。

C++程式碼實現

【圖解資料結構】 一組動畫演示選擇排序

Java程式碼實現

【圖解資料結構】 一組動畫演示選擇排序

JavaScript程式碼實現

【圖解資料結構】 一組動畫演示選擇排序

Python程式碼實現

【圖解資料結構】 一組動畫演示選擇排序

如果你是iOS開發者,可以在GitHub上 github.com/MisterBooo/… 獲取更直觀可除錯執行的原始碼。

如果你想獲取高清的動畫演示,在 五分鐘學演算法 公眾號裡回覆 選擇排序 即可。

相關文章