看圖輕鬆理解資料結構與演算法系列(氣泡排序)

超人汪小建發表於2018-09-13

前言

推出一個新系列,《看圖輕鬆理解資料結構和演算法》,主要使用圖片來描述常見的資料結構和演算法,輕鬆閱讀並理解掌握。本系列包括各種堆、各種佇列、各種列表、各種樹、各種圖、各種排序等等幾十篇的樣子。

氣泡排序

氣泡排序是一種很簡單的排序演算法,主要思想就是不斷走訪待排序序列,每次只比較兩個相鄰元素,如果這倆元素順序不符合要求則對換它們,不斷重複知道沒有相鄰元素需要對換。在不斷走訪比較過程中,越大的元素經過交換會慢慢走到數列頂端,所以看起來它就像氣泡一樣不斷往上冒,於是就叫冒泡。

排序要點

  1. 比較相鄰兩個元素,如果前一元素比後一元素大則對換它們的位置。
  2. 從頭開始對每一對相鄰元素都執行1的對比工作,直至結尾最後一對,執行完一輪後,該輪最大的元素被換置到最後。
  3. 針對所有元素執行若干輪1和2操作,每次經過2操作後都會將該輪的最大值換置到該輪最後,而最後元素不參與下一輪。
  4. 每一輪對越來越少的元素重複3操作,直至沒有任何一對元素需要比較。

排序過程

假設我們有如下5個元素,分別為72,58,22,34,14,現在進行氣泡排序。

image

第一遍,對所有元素前後兩個元素進行比較,

image

72比58大,兩者對換,完成後繼續與下一元素比較,

image

72比22大,兩者對換,完成後繼續與下一元素比較,

image

72比34大,兩者對換,完成後繼續與下一元素比較,

image

72比14大,兩者對換,72已經到序列最頂端,它是這一輪的最大的元素。下一輪比較排除72,只需比較58,22,34,14。開始比較,

image

58比22大,兩者對換,完成後繼續與下一元素比較,

image

58比34大,兩者對換,完成後繼續與下一元素比較,

image

58比14大,兩者對換,58已經到該輪序列最頂端,它是這一輪的最大的元素。下一輪比較排除58,只需比較22,34,14。開始比較,

image

22比34小,兩者不對換,繼續與下一元素比較,

image

34比14大,兩者對換,34已經到該輪序列最頂端,它是這一輪的最大的元素。下一輪比較排除34,只需比較22,14。開始比較,

image

22比14大,兩者對換,22已經到該輪序列最頂端,它是這一輪的最大的元素。除了22後只剩一個元素,停止比較,至此完成了整個排序工作。

image

-------------推薦閱讀------------

我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)

為什麼寫《Tomcat核心設計剖析》

我的2017文章彙總——機器學習篇

我的2017文章彙總——Java及中介軟體

我的2017文章彙總——深度學習篇

我的2017文章彙總——JDK原始碼篇

我的2017文章彙總——自然語言處理篇

我的2017文章彙總——Java併發篇


跟我交流,向我提問:

看圖輕鬆理解資料結構與演算法系列(氣泡排序)

歡迎關注:

看圖輕鬆理解資料結構與演算法系列(氣泡排序)

相關文章