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

資訊專欄INFORMATION COLUMN

js-常見算法

LiveVideoStack / 2530人閱讀

摘要:開始時間結束時間優(yōu)化版本記錄最后交換的位置,可減少循環(huán)的次數開始時間結束時間選擇排序描述選擇排序是一種簡單直觀的排序算法。以此類推,直到所有元素均排序完畢。

冒泡排序

描述:
冒泡排序是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。

function bubbleSort(arr) {
    console.log("開始時間", new Date().getTime())
    var length = arr.length
    for (var i = 0; i < length; i++) {
        for (var j = 0; j < length - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                let temp = arr[j]
                arr[j] = arr[j+1]
                arr[j+1] = temp
            }
        }
    }
    console.log("結束時間", new Date().getTime())
    return arr
}

優(yōu)化版本(記錄最后交換的位置,可減少循環(huán)的次數)

function bubbleSort2(arr) {
    console.log("開始時間", new Date().getTime())
    var i = arr.length - 1
    while(i > 0) {
        var pos = 0
        for (var j = 0; j < i; j++) {
            if (arr[j] > arr[j + 1]) {
                pos = j
                let temp = arr[j]
                arr[j] = arr[j+1]
                arr[j+1] = temp
            }
        }
        i = pos
    }
    console.log("結束時間", new Date().getTime())
    return arr
}
選擇排序

描述:
選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工作原理:首先在未排序序列中找到最?。ù螅┰?,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最?。ù螅┰?,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

function selectionSort(arr) {
    console.log("開始時間", new Date().getTime())
    var length = arr.length
    var minIndex, temp
    for (var i = 0; i <= length -1; i++) {
        minIndex = i;
        for (var j = i; j <= length -1; j ++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j
            }
        }
        temp = arr[i]
        arr[i] = arr[minIndex]
        arr[minIndex] = temp
    }
    console.log("結束時間", new Date().getTime())
    return arr
}

優(yōu)化(同時把最小和最大值放在首位和末尾)

function selectionSort2(arr) {
    console.log("開始時間", new Date().getTime())
    var length = arr.length
    var minIndex, temp, maxIndex
    for (var i = 0; i <= length -i -1; i++) {
        minIndex = i;
        maxIndex = length - 1 -i
        for (var j = i; j <= length -1 - i; j ++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j
            }
            if (arr[j] > arr[maxIndex]) {
                maxIndex = j
            }
        }
        temp = arr[i]
        arr[i] = arr[minIndex]
        arr[minIndex] = temp
    
        temp = arr[length - 1 - i]
        arr[length - 1 - i] = arr[maxIndex]
        arr[maxIndex] = temp
    }
    console.log("結束時間", new Date().getTime())
    return arr
}

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

轉載請注明本文地址:http://systransis.cn/yun/95641.html

相關文章

  • js常見算法(一):排序,數組去重,打亂數組,統(tǒng)計數組各個元素出現的次數, 字符串各個字符的出現次數

    摘要:排序,數組去重,打亂數組,統(tǒng)計數組各個元素出現的次數,字符串各個字符的出現次數,獲取地址鏈接的各個參數以后會記錄自己解決過和遇到過的算法相關的題,系列一就以常見的開篇吧。 排序,數組去重,打亂數組,統(tǒng)計數組各個元素出現的次數, 字符串各個字符的出現次數,獲取地址鏈接的各個參數 以后會記錄自己解決過和遇到過的算法相關的題,系列一就以常見的開篇吧。 排序 本來想多列幾個排序方法,但是其它都...

    DTeam 評論0 收藏0
  • js常見算法(二):從給定的無序、不重復的數組 A 中,取出 N 個數,使其相加和 為 M

    摘要:背包問題從給定的無序不重復的數組中,取出個數,使其相加和為這個算法有很多擴展,比如電商中購物車中的計算,滿減,不滿會在熱銷商品中進行推薦填充。 背包問題:從給定的無序、不重復的數組 A 中,取出 N 個數,使其相加和 為 M 這個算法有很多擴展,比如電商中購物車中的計算,滿100減20,不滿100會在熱銷商品中進行推薦填充。 function getCombBySum(array,su...

    testbird 評論0 收藏0
  • 前端常見算法JS實現

    摘要:原文鏈接排序算法冒泡排序從小到大排序從大到小排序快速排序這里用,被換過來的必然比小,賦值后直接讓自加,不用再比較,可以提高效率這里用,被換過來的必然比大,賦值后直接讓自減,不用再比較,可以提高效率二路歸并字符串操作判斷回文字 原文鏈接 排序算法 1、冒泡排序 function bubbleSort(arr){ var i = 0, j = 0; for(i=1; i...

    GeekQiaQia 評論0 收藏0
  • JS實現的常見幾種排序算法

    1.快速排序法 function quickSort(a) { if (a.length a[j+1]) { sortArray = a[j]; a[j] = a[j+1]; ...

    lncwwn 評論0 收藏0
  • 常見排序及查找算法JS實現

    摘要:冒泡排序臨時交換變量記錄數組長度計數,記錄一共進行了多少次交換數組長度為輸出數組成都外層循環(huán)排序出數組的的值交換標志內層循環(huán),從底往上冒泡,將小泡浮到位置比較兩個元素大小,并交換位置確定交換標志記錄比較元素的次數共交換了次輸出數 1.冒泡排序 function bubbleSort(arr) { var temp; ...

    icattlecoder 評論0 收藏0

發(fā)表評論

0條評論

LiveVideoStack

|高級講師

TA的文章

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