可視化冒泡排序算法
相信大家都知道一些排序算法,比如冒泡排序,快速排序,選擇排序等等...就算大家不知道,也應(yīng)該聽(tīng)過(guò),一般的面試都會(huì)問(wèn)一些算法,
簡(jiǎn)單一點(diǎn)的就是冒泡排序這些,難一些的就是A*尋路算法等...其實(shí)大家可能都會(huì)覺(jué)得這個(gè)冒泡排序非常簡(jiǎn)單,確實(shí)是挺簡(jiǎn)單的,
但是對(duì)于初學(xué)者或者一些萌新們來(lái)說(shuō),他們只會(huì)按照別人說(shuō)的秘籍:外層循環(huán)n - 1 次,里層循環(huán)n -1 - i 次,但是真的理解了嗎?為什么是這么操作的呢?
基于這樣的一個(gè)情況,我這次來(lái)寫(xiě)一個(gè)可視化的冒泡排序,幫助萌新初學(xué)者們來(lái)加深下對(duì)這個(gè)冒泡排序算法的理解。
這個(gè)算法需要重復(fù)地走訪過(guò)要排序的元素列,依次比較兩個(gè)相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯(cuò)誤就把他們交換過(guò)來(lái)。走訪元素的工作是重復(fù)地進(jìn)行直到?jīng)]有相鄰元素需要交換,也就是說(shuō)該元素列已經(jīng)排序完成。它的名字由來(lái)是因?yàn)樵酱蟮脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會(huì)上浮到頂端一樣,故名“冒泡排序”。它的原理簡(jiǎn)單來(lái)說(shuō)為以下四點(diǎn):
一:比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。
二:對(duì)每一對(duì)相鄰元素做同樣的工作,從開(kāi)始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。
三:針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。
四:持續(xù)每次對(duì)越來(lái)越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。
OK,看樣子有朋友已經(jīng)看蒙了,話(huà)不多說(shuō),上效果圖看看:

這是已經(jīng)排序完成的效果,既然是可視化排序,當(dāng)然排序的過(guò)程是可以看的到的,這里我用的是協(xié)程函數(shù)來(lái)做的,代碼附上:

有什么看不懂的可以來(lái)找我