排序算法總結

JavaScript實現(xiàn)十大排序算法缝裁,代碼+動圖+在實現(xiàn)代碼的時候遇到的坑

冒泡算法

(1) 實現(xiàn)思路

不斷的重復的對比相鄰的兩個元素糯景,把大(凶蟀)的移到一個方向去

(2) 代碼實現(xiàn):
bubbleSort (arr) {
    let len = arr.length
    for (let i = 0; i < len; i++) {
      for (let j = 0; j < len - i - 1; j++) {
        if (arr[j + 1] < arr[j]) {
          [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
        }
      }
    }
    return arr
  }
(3)寫代碼時候容易犯的思路錯誤:

在if (arr[j + 1] < arr[j]) 這塊用 arr[j] 和 arr[i]做比較担钮,
冒泡排序中,外圈循環(huán)只是用來計數(shù)的厚棵。需要做比較的是相鄰的兩項蕉世,就是arr[j] & arr[j + 1]


(4) 動畫效果
冒泡排序.png


選擇排序

(1) 實現(xiàn)思路

每一次直接選出最小(大)的一個婆硬,不斷重復

seleteSort (arr) {
    let len = arr.length
    for (let i = 0; i < len; i++) {
      let minIndex = i
      for (let j = i + 1; j < len; j++) {
        if (arr[j] < arr[minIndex]) {
          [arr[minIndex], arr[j]] = [arr[j], arr[minIndex]]
          minIndex = j
        }
      }
    }
    return arr
  },

插入排序

  insertSort (arr) {
    let len = arr.length
    for (let i = 0; i < len; i++) {
      let index = i
      for (let j = i - 1; j >= 0; j--) {
        if (arr[j] > arr[index]) {
          [arr[j], arr[index]] = [arr[index], arr[j]]
          index = j
        }
      }
    }
    return arr
  },

快速排序

  quickSort (arr) {
    let len = arr.length
    if (len <= 1) return arr
    let pivot = Math.floor(len / 2)
    let item = arr.splice(pivot, 1)
    let left = []
    let right = []
    for (let i = 0; i < len - 1; i++) {
      if (arr[i] < item) {
        left.push(arr[i])
      } else {
        right.push(arr[i])
      }
    }
    return this.quickSort(left).concat(item, this.quickSort(right))
  }
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末狠轻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子彬犯,更是在濱河造成了極大的恐慌向楼,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谐区,死亡現(xiàn)場離奇詭異湖蜕,居然都是意外死亡,警方通過查閱死者的電腦和手機宋列,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門重荠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虚茶,你說我怎么就攤上這事戈鲁。” “怎么了嘹叫?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵婆殿,是天一觀的道長。 經(jīng)常有香客問我罩扇,道長婆芦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任喂饥,我火速辦了婚禮消约,結果婚禮上,老公的妹妹穿的比我還像新娘员帮。我一直安慰自己或粮,他們只是感情好,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布捞高。 她就那樣靜靜地躺著氯材,像睡著了一般。 火紅的嫁衣襯著肌膚如雪硝岗。 梳的紋絲不亂的頭發(fā)上氢哮,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機與錄音型檀,去河邊找鬼冗尤。 笑死,一個胖子當著我的面吹牛胀溺,可吹牛的內容都是我干的裂七。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼月幌,長吁一口氣:“原來是場噩夢啊……” “哼碍讯!你這毒婦竟也來了?” 一聲冷哼從身側響起扯躺,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捉兴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后录语,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倍啥,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年澎埠,在試婚紗的時候發(fā)現(xiàn)自己被綠了虽缕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蒲稳,死狀恐怖氮趋,靈堂內的尸體忽然破棺而出伍派,到底是詐尸還是另有隱情,我是刑警寧澤剩胁,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布诉植,位于F島的核電站,受9級特大地震影響昵观,放射性物質發(fā)生泄漏晾腔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一啊犬、第九天 我趴在偏房一處隱蔽的房頂上張望灼擂。 院中可真熱鬧,春花似錦觉至、人聲如沸剔应。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽领斥。三九已至,卻和暖如春沃暗,著一層夾襖步出監(jiān)牢的瞬間月洛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工孽锥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嚼黔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓惜辑,卻偏偏與公主長得像唬涧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盛撑,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容

  • 接觸U3D以來,我做過的場景漫游實現(xiàn)方式一般有以下幾種: Unity3d中的Animation組件,通過設置攝像機...
    道阻且長_行則將至閱讀 6,769評論 0 0
  • 讀在職法律碩士已經(jīng)一個月了碎节,感覺又回到了學生時代,但疲憊感又遠甚于學生時代抵卫。因為學校離住所太遠狮荔,為了早上能多睡...
    No_No_閱讀 273評論 0 0
  • 從珠海到中山故居再到東莞,回到凱景酒店介粘,終于有回家的感覺殖氏,一場王者盛宴在等待我們。 旅途發(fā)生了很多姻采,在中山故...
    陳毓灃閱讀 195評論 0 0
  • 想去雅采,但聽說真的都是屎粑粑。 牧民不易,終于知道他們?yōu)楹尾幌丛瑁ㄌ貏e是在冬牧場上婚瓜,水源全來自于降雪宝鼓,連正常...
    煙落且聽塵閱讀 757評論 4 2