可視化冒泡排序算法

相信大家都知道一些排序算法,比如冒泡排序,快速排序,選擇排序等等...就算大家不知道,也應該聽過,一般的面試都會問一些算法,簡單一點的就是冒泡排序這些,難一些的就是A*尋路算法等...其實大家可能都會覺得這個冒泡排序非常簡單,確實是挺簡單的,但是對於初學者或者一些萌新們來說,他們只會按照別人說的祕籍:外層循環n - 1 次,裏層循環n -1 - i 次,但是真的理解了嗎?爲什麼是這麼操作的呢?基於這樣的一個情況,我這次來寫一個可視化的冒泡排序,幫助萌新初學者們來加深下對這個冒泡排序算法的理解。

冒泡,何爲冒泡?吐泡泡嗎?哈哈,當然不是了。這個算法需要重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從AZ)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。它的名字由來是因爲越大的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。它的原理簡單來說爲以下四點:

一:比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。

二:對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

三:針對所有的元素重複以上的步驟,除了最後一個。

四:持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

OK,看樣子有朋友已經看蒙了,話不多說,上效果圖看看:

 

這是已經排序完成的效果,既然是可視化排序,當然排序的過程是可以看的到的,這裏我用的是協程函數來做的,代碼附上:

註釋什麼的都有的,有什麼看不懂的可以來找我

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