引言

  排序算法是數(shù)據(jù)結(jié)構(gòu)和算法之中的基本功,無(wú)論是在筆試還是面試,還是實(shí)際運(yùn)用中都有著很基礎(chǔ)的地位。這不正直七月,每年校招的備戰(zhàn)期,所以想把常見(jiàn)的排序算法記錄下來(lái)。在本篇文章中的排序算法使用 JavaScript 實(shí)現(xiàn)。

 一、 冒泡排序

  冒泡排序是排序算法中最簡(jiǎn)單的一個(gè)算法,其優(yōu)點(diǎn)是易理解,易實(shí)現(xiàn)。在一些對(duì)性能要求不高且數(shù)據(jù)量不大的需求中,冒泡排序是一個(gè)很好的選擇。

  原理:假設(shè)排序順序?yàn)樵鲂?,?shù)組長(zhǎng)度為 N。數(shù)組每相鄰兩個(gè)元素進(jìn)行比較,大數(shù)后移,小數(shù)前移,第一輪排序下來(lái)就能找到最大的數(shù)。也就是比較 A[i] 和 A[i+1] ,將大數(shù)后移,隨后增加 i 的值,再進(jìn)行比較。第二輪再對(duì)剩余的 N-1 個(gè)數(shù)進(jìn)行排序,找出第二大的數(shù),以此類(lèi)推。同時(shí)也可以記錄交換次數(shù)來(lái)進(jìn)行優(yōu)化,如果在一層循環(huán)之中交換次數(shù)為 0,則排序結(jié)束。

  下面這張圖展示了冒泡排序的全過(guò)程:

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

  下面這張圖展示冒泡排序在宏觀層面的全過(guò)程:

  iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

平均時(shí)間復(fù)雜度最優(yōu)時(shí)間負(fù)復(fù)雜度最壞時(shí)間復(fù)雜度空間復(fù)雜度

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言:
 
<span id="n5d20"></span>
    <label id="n5d20"><legend id="n5d20"><li id="n5d20"></li></legend></label>