如何理解JavaScript中常用的4種排序算法佃牛?

冒泡排序

冒泡排序是我們在編程算法中淹辞,算是比較常用的排序算法之一,在學(xué)習(xí)階段俘侠,也是最需要接觸理解的算法象缀,所以我們放在第一個來學(xué)習(xí)。

算法介紹:

比較相鄰的兩個元素,如果前一個比后一個大爷速,則交換位置央星。

第一輪把最大的元素放到了最后面。

由于每次排序最后一個都是最大的惫东,所以之后按照步驟1排序最后一個元素不用比較莉给。

冒泡算法改進(jìn):

設(shè)置一個標(biāo)志,如果這一趟發(fā)生了交換廉沮,則為true颓遏。否則為false。如果這一趟沒有發(fā)生交換滞时,則說明排序已經(jīng)完成叁幢。代碼如下:

假如數(shù)組長度是20,如果只有前十位是無序排列的坪稽,后十位是有序且都大于前十位曼玩,所以第一趟遍歷排序的時候發(fā)生交換的位置必定小于10,且該位置之后的必定有序窒百,我們只需要排序好該位置之前的就可以黍判,因此我們要來標(biāo)記這個位置就可以了,即可以記錄每次掃描中最后一次交換的位置篙梢,下次掃描的時候只要掃描到上次的最后交換位置就行了样悟,因?yàn)楹竺娴亩际且呀?jīng)排好序的,無需再比較庭猩,代碼如下:

每一次循環(huán)從兩頭出發(fā)算出最大和最小值窟她,代碼如下:

在代碼3的基礎(chǔ)上記錄每次掃描最后一次交換的位置蔼水,下次掃描的時候只要掃描到上次的最后交換位置就行震糖,同代碼2趴腋,代碼如下:

冒泡排序動圖演示:

快速排序

算法介紹:

快速排序是對冒泡排序的一種改進(jìn)吊说,第一趟排序時將數(shù)據(jù)分成兩部分论咏,一部分比另一部分的所有數(shù)據(jù)都要小。然后遞歸調(diào)用颁井,在兩邊都實(shí)行快速排序厅贪。

快速排序動圖演示:

選擇排序

算法介紹:

選擇排序就是從一個未知數(shù)據(jù)空間里,選取之最放到一個新的空間

選擇排序動圖演示:

插入排序

算法介紹:

從第一個默認(rèn)被排好序的元素開始

取出下一個元素雅宾,在已經(jīng)排序的元素序列中從后向前掃描

如果已排序的元素大于取出的元素养涮,則將其分別向后移動一位

直到找到已排序的元素中小于或等于取出的元素,將取出的元素放到它的后一位

重復(fù)步驟2

插入排序算法改進(jìn)-二分法插入排序:

插入排序法動圖演示:

以上就是4中比較基礎(chǔ)的排序方法了眉抬,JavaScript的排序算法還有很多贯吓,這是我們4種最常見也是最基本的算法,掌握理解好蜀变,在面試和開發(fā)中也能從容應(yīng)對了悄谐。

如果你也喜歡學(xué)習(xí)JavaScript,喜歡學(xué)習(xí)前端開發(fā)库北,歡迎關(guān)注公眾號【前端研究所】爬舰,每天更新更多教程和學(xué)習(xí)方法哦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寒瓦,一起剝皮案震驚了整個濱河市情屹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孵构,老刑警劉巖屁商,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颈墅,居然都是意外死亡蜡镶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門恤筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來官还,“玉大人,你說我怎么就攤上這事毒坛⊥祝” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵煎殷,是天一觀的道長屯伞。 經(jīng)常有香客問我,道長豪直,這世上最難降的妖魔是什么劣摇? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮弓乙,結(jié)果婚禮上末融,老公的妹妹穿的比我還像新娘钧惧。我一直安慰自己,他們只是感情好勾习,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布浓瞪。 她就那樣靜靜地躺著,像睡著了一般巧婶。 火紅的嫁衣襯著肌膚如雪乾颁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天粹舵,我揣著相機(jī)與錄音钮孵,去河邊找鬼骂倘。 笑死眼滤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的历涝。 我是一名探鬼主播诅需,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荧库!你這毒婦竟也來了堰塌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤分衫,失蹤者是張志新(化名)和其女友劉穎场刑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚪战,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牵现,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了邀桑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞎疼。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖壁畸,靈堂內(nèi)的尸體忽然破棺而出贼急,到底是詐尸還是另有隱情,我是刑警寧澤捏萍,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布太抓,位于F島的核電站,受9級特大地震影響令杈,放射性物質(zhì)發(fā)生泄漏走敌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一这揣、第九天 我趴在偏房一處隱蔽的房頂上張望悔常。 院中可真熱鬧影斑,春花似錦、人聲如沸机打。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽残邀。三九已至皆辽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芥挣,已是汗流浹背驱闷。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留空免,地道東北人空另。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蹋砚,于是被迫代替她去往敵國和親扼菠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 排序(上):為什么插入排序比冒泡排序更受歡迎? 排序?qū)τ谌魏我粋€程序員來說墨坚,可能都不會陌生秧饮。你學(xué)的第一個算法,可能...
    GhostintheCode閱讀 3,358評論 4 27
  • 排序算法說明 (1)排序的定義:對一序列對象根據(jù)某個關(guān)鍵字進(jìn)行排序泽篮; 輸入:n個數(shù):a1,a2,a3,…,an 輸...
    code武閱讀 658評論 0 0
  • 本文首發(fā)于我的個人博客:尾尾部落 排序算法是最經(jīng)典的算法知識盗尸。因?yàn)槠鋵?shí)現(xiàn)代碼短,應(yīng)該廣咪辱,在面試中經(jīng)常會問到排序算法...
    繁著閱讀 4,572評論 3 119
  • 001 在琳瑯滿目的貨架,挑選一瓶適合的醋真難…… 和愛人去逛超市专筷,要買一瓶食用醋弱贼。超市的貨架琳瑯滿目,光各種醋就...
    521杰行天下閱讀 511評論 4 2
  • 后來 她丟失了項(xiàng)鏈 佝僂的鳶尾 有水滴過 是透明的藍(lán)色臉譜 笑紋里 藏著風(fēng)月聲 鞋底的沙石 磨成褐色珍珠 別說虛榮...
    十三小滿閱讀 111評論 0 3