js 排序算法(持續更新中)

冒泡排序圖片描述

圖片描述

//原理:每次都是先後兩兩比較而後根據大小交換位置(能夠從小到大,或者相反)
//1.prepare swap fn
function swap(array,index1,index2) {
    var aux = array[index1];
    array[index1] = array[index2];
    array[index2] = aux;
}
//2.double for
function bubbleSort(arr){
    let length = arr.length
    for (let i=0;i<length;i++){
        for (let j=0;j<length-1;j++){
            if (arr[j] > arr[j+1]){
                swap(arr,j,j+1)
            }
        }
        console.log(arr)    //過程
    } 
    console.log('result',arr)   //結果
}
let test = [1,5,4,3,2]
bubbleSort(test)

控制檯運行實例:
圖片描述spa

選擇排序

圖片描述

function swap(array,index1,index2) {
    var aux = array[index1];
    array[index1] = array[index2];
    array[index2] = aux;
}
//selectionSort
//原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
//而後,再從剩餘未排序元素中繼續尋找最小(大)元素,而後放到已排序序列的末尾。
//以此類推,直到全部元素均排序完畢。 
function selectionSort(arr) {
    let len = arr.length;
    for (let i = 0; i < len - 1; i++) {
        let minIndex = i;   //假設arr中最小值得index爲minIndex
        for (let j = i + 1; j < len; j++) {
            if (arr[j] < arr[minIndex]) {     // 尋找最小的數
                minIndex = j;                 // 將最小數的索引保存
            }
        }
        swap(arr,minIndex,i)    //將實際最小值index(爲i)賦值給minIndex,即得到當前一輪排序後的新arr
        console.log(arr)   //過程
    }
    console.log('result',arr)   //結果
    return arr;
} 
let test = [5,4,1,3,2]
selectionSort(test)

控制檯實例:
圖片描述3d

相關文章
相關標籤/搜索