js排序算法

冒泡排序

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

冒泡排序就是用數(shù)組中第一個值和所有值進行比較,選出最大的值放到數(shù)組最后。下一次遍歷的時候就不需遍歷最后一個值,以此類推。

選擇排序

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

選擇排序就是剛開始排序的時候初始化數(shù)組第一位是最小值的下標,然后將第一位和其余所有值進行比較,如假定最小值大于比較值時,將較小值下標賦值給minIndex,最后進行互換。

插入排序

function sort(arr) {
    for(let i = 1;i<arr.length;i++){
        let compareVal = arr[i];
        let j = i - 1;
        while (arr[j] > compareVal) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = compareVal;
    }
    return arr;
}

插入排序就是假定數(shù)組中第一個值是最小值,然后取第二個值與之相比較,以此類推。

快速排序

let arr = [1,3,5,7,9,2,4,6,8,10];
const quickSort = function (arr) {
    if(arr.length <= 1){
        return arr;
    }
    let leftArr = [],rightArr = [];
    let middleIndex = Math.floor(arr.length / 2);
    let middleVal = arr.splice(middleIndex,1)[0];
    for(let i = 0;i<arr.length;i++){
        if(middleVal > arr[i]){
            leftArr.push(arr[i]);
        }else{
            rightArr.push(arr[i]);
        }
    }
    return quickSort(leftArr).concat([middleVal],quickSort(rightArr))
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • JS的排序算法 引子 有句話怎么說來著: 雷鋒推倒雷峰塔,Java implements JavaScript. ...
    匆匆歲月閱讀 511評論 1 5
  • 十大經(jīng)典算法排序總結(jié)對比一張圖概括,主流排序算法概覽: 名詞解釋:n: 數(shù)據(jù)規(guī)模k:“桶”的個數(shù)In-place:...
    飛菲fly閱讀 696評論 0 2
  • 之前寫過js實現(xiàn)數(shù)組去重, 今天繼續(xù)研究數(shù)組: 排序算法實現(xiàn)。 排序是數(shù)據(jù)結(jié)構(gòu)主要內(nèi)容,并不限于語言主要在于思想;...
    蕭強閱讀 11,612評論 3 50
  • 對計算機存儲的數(shù)據(jù)執(zhí)行的最常見的操作就是排序和檢索。接下來我們要講解的算法都是依賴數(shù)組來存儲數(shù)據(jù)的,也就是js形式...
    海娩閱讀 606評論 0 4
  • 快速排序是一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法。 分治法的基本思想是:將原問題分解為若干個規(guī)...
    黎貝卡beka閱讀 1,013評論 0 0

友情鏈接更多精彩內(nèi)容