看圖輕鬆理解數據結構與算法系列(冒泡排序)

前言

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

冒泡排序

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

排序要點

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

排序過程

假設咱們有以下5個元素,分別爲72,58,22,34,14,如今進行冒泡排序。sql

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大,二者對換,完成後繼續與下一元素比較,.net

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併發篇


跟我交流,向我提問:

歡迎關注:

相關文章
相關標籤/搜索