成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

簡明算法: 冒泡排序(javascript描述)

liukai90 / 2478人閱讀

懶惰了很久,人有點生銹,所以寫個算法系列讓自己腦筋活躍起來。

(所有范例一律從小到大排序)

冒泡排序

給定數(shù)組:

var list = [ 54, 26, 93, 17, 77, 31, 44, 88, 55, 20 ];

算法描述:

將第一個元素與第二個元素對比,此時第一個元素比第二個元素大,交換他們,這樣較大的元素就位于第二個位置了;

list = [ 26, 54, 93, 17, 77, 31, 44, 88, 55, 20 ];

將第二個元素與第三個元素對比,此時第二個元素比第三個元素小,保持原樣不變;

list = [ 26, 54, 93, 17, 77, 31, 44, 88, 55, 20 ];

重復(fù)上面的步驟,直到最后我們用倒數(shù)第二個元素與倒數(shù)第一個元素相比之后,經(jīng)過第一輪排序,最大的元素93被移動到了數(shù)組最后;

list = [ 26, 54, 17, 77, 31, 44, 88, 55, 20, 93 ];

然后我們重復(fù)1,2,3步驟;經(jīng)過第二輪我們會找到次大的元素排在倒數(shù)第二位,即88被移動到了數(shù)組倒數(shù)第二位;

list = [ 26, 17, 54, 31, 44, 77, 55, 20, 88, 93 ];

再次重復(fù)直到整個數(shù)組有序;

第1輪: [ 26, 54, 17, 77, 31, 44, 88, 55, 20, 93 ]
第2輪: [ 26, 17, 54, 31, 44, 77, 55, 20, 88, 93 ]
第3輪: [ 17, 26, 31, 44, 54, 55, 20, 77, 88, 93 ]
第4輪: [ 17, 26, 31, 44, 54, 20, 55, 77, 88, 93 ]
第5輪: [ 17, 26, 31, 44, 20, 54, 55, 77, 88, 93 ]
第6輪: [ 17, 26, 31, 20, 44, 54, 55, 77, 88, 93 ]
第7輪: [ 17, 26, 20, 31, 44, 54, 55, 77, 88, 93 ]
第8輪: [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]
第9輪: [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]

算法實現(xiàn):

function bubble(list) {
  // 開啟length-1輪循環(huán),因為最后一輪只剩一個元素,沒必要比較
  for (let i = 0; i < list.length - 1; i++) {
    // 兩兩對比,每次循環(huán)時j的取值上限需要舍去尾部已經(jīng)有序的數(shù)據(jù),所以length-1-i
    for (let j = 0; j < list.length - 1 - i; j++) {
      if (list[j] > list[j + 1]) {
        // ES6語法 交換元素
        [list[j], list[j + 1]] = [list[j + 1], list[j]];
      }
    }
  }
}

// 測試
var list = [ 54, 26, 93, 17, 77, 31, 44, 88, 55, 20 ];
bubble(list);
console.log(list);
// [ 17, 20, 26, 31, 44, 54, 55, 77, 88, 93 ]

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/93220.html

相關(guān)文章

  • 簡明算法: 選擇排序(javascript描述)

    摘要:懶惰了很久,人有點生銹,所以寫個算法系列讓自己腦筋活躍起來。所有范例一律從小到大排序選擇排序比冒泡的改進是,不會頻繁交換元素,而只是記錄索引,最后再交換。 懶惰了很久,人有點生銹,所以寫個算法系列讓自己腦筋活躍起來。 (所有范例一律從小到大排序) 選擇排序比冒泡的改進是,不會頻繁交換元素,而只是記錄索引,最后再交換。 選擇排序 給定數(shù)組: var list = [ 54, 26, 93...

    Miyang 評論0 收藏0
  • 簡明算法: 插入排序(javascript描述)

    摘要:懶惰了很久,人有點生銹,所以寫個算法系列讓自己腦筋活躍起來。所有范例一律從小到大排序插入排序的思路可以參考抓撲克牌假定我們已有的撲克牌已經(jīng)有序,現(xiàn)在抓了一張新牌,我們需要插入到適當(dāng)?shù)奈恢靡员3株犃幸廊挥行颉? 懶惰了很久,人有點生銹,所以寫個算法系列讓自己腦筋活躍起來。 (所有范例一律從小到大排序) 插入排序的思路可以參考抓撲克牌:假定我們已有的撲克牌已經(jīng)有序,現(xiàn)在抓了一張新牌,我們需要...

    Guakin_Huang 評論0 收藏0
  • 算法排序算法總結(jié)(JavaScript描述

    摘要:二代碼簡單選擇排序一分析循環(huán)次,每一次的當(dāng)前項與其之后的項作比較,找出其中最小的那個,與當(dāng)前項交換。二代碼希爾排序是一種改進版的插入排序,縮小增量排序。這樣做的目的是因為,直接插入排序在序列基本有序時效率最高。 排序算法 平均情況 最好情況 最壞情況 輔助空間 穩(wěn)定性 冒泡排序 O(n^2) O(n) O(n^2) O(1) 穩(wěn)定 簡單選擇排序 O(n^2) O(n^2)...

    dkzwm 評論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 冒泡排序、插入排序、選擇排序

    摘要:之所以把冒泡排序選擇排序插入排序放在一起比較,是因為它們的平均時間復(fù)雜度都為。其中,冒泡排序就是原地排序算法。所以冒泡排序是穩(wěn)定的排序算法。選擇排序思路選擇排序算法的實現(xiàn)思路有點類似插入排序,也分已排序區(qū)間和未排序區(qū)間。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法為王。 想學(xué)好前端,先練好內(nèi)功,...

    canger 評論0 收藏0
  • 常用排序算法JavaScript實現(xiàn)

    摘要:代碼實現(xiàn)六堆排序算法簡介堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法。九計數(shù)排序算法簡介計數(shù)排序是一種穩(wěn)定的排序算法。計數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡介 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它...

    jerry 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<