JS排序

針對排序算法總結整理如下:
1.冒泡排序
1)一列數組,從元素第一個位置 0 開始比較相鄰 i+1位置的元素,如果大于它,那么交換位置,起始位置i++,繼續比較到i+1的元素。重復進行直到 i+1 == 數組長度 時結束循環?,F在最后一個元素為最大值。(內層循環 目標:找到最大)
2)len-1,刨去最后一個元素即當前最大元素,繼續從i = 0 開始 重復執行(1)步 直到 len = 0時 結束循環(外層循環 目標:重復找到第二個、第三個...最大元素)

function bubbleSort(arr) {
    var len = arr.length, i = 0,temp;
    while(--len) {
        while (i < len) {
            if(arr[i] > arr[i+1]) {
                temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
            i++;
        }
        i = 0;
    }
    return arr;
}

2.選擇排序
1)從第0個元素開始初始假設第一個最小元素索引為0, 從i+1個元素開始循環到len直到找到更小的數則交換索引,否則保持不變, (內層循環 目標:找到最小的數的索引)
2)如果初始設定的索引不是最小數那么交換元素
3)從i+1開始直到 <len-1 重復進行(1)、(2)

function selectSort(arr) {
    var len = arr.length,min, temp;
    for ( var i = 0; i < len - 1; i++ ) {
        min= i;
        for ( var j = i + 1; j < len; j++ ) {
            if ( arr[j] < arr[min] ) {     //找到更小的數
                min= j;    //保存當前最小的索引
            }
        }
        if( i != min ){//如果不是當前最小則交換
            temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }
    return arr;
}

3.插入排序
1)假定第0個元素為排序好的有序隊列,從第1個元素開始,向當前有序隊列從后向前一一比較,直到有一個元素大于它則將該元素前移

function insertSort(arr){
    var len = arr.length;
    for (var i = 1; i < len; i++) {
        var temp= arr[i];
        var j = i - 1;
        while (j >= 0 && arr[j] > temp) {
             arr[j + 1] = arr[j];
             j--;
        }
        arr[j + 1] = temp;
    }
    return arr;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容