五分鐘學會一個初級算法:冒泡排序

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

冒泡排序(Bubble Sort)也是一種簡單直觀的排序算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。

算法步驟

  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
  3. 針對所有的元素重複以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

算法演示

五分鐘學會一個初級算法:冒泡排序

排序動畫過程解釋

  1. 將天平放在序列的右端,並比較天平左右的數字
  2. 在這種情況下我們比較 3 和 8
  3. 比較後如果右邊的數字較小,則被交換
  4. 因為 8 大於 3 ,所以數字不用交換
  5. 比較完成後,將天平向左移動一個位置,比較數字
  6. 因為 3 大於 2 ,所以數字不用交換
  7. 比較完成後,逐一移動天平,比較數字
  8. 此時 2 小於 4 ,所以左右的數字互相交換
  9. 重複同樣的操作,直到天平移動到左端
  10. 。。。。。。
  11. 天平到達左端
  12. 經過上述的操作,數列中最小的數字已經移動到左端
  13. 將天平返回右端
  14. 重複相同的操作,直到所有數字都被排序
  15. 。。。。。。
  16. 吐完泡泡了

參考代碼

C++

五分鐘學會一個初級算法:冒泡排序

Java

五分鐘學會一個初級算法:冒泡排序

Python

五分鐘學會一個初級算法:冒泡排序

獲取文章高清動畫圖片私信我即可。


分享到:


相關文章: