排序

67 阅读1分钟

冒泡排序

两两比较,每轮结束后,大值都排在最后。

function swap(arr, i, j) {
    const temp = arr[i]
    arr[i] = arr[j]
    arr[j] = temp
    
    // 或者ES6写法
    [arr[i], arr[j]] = [arr[j], arr[i]]
}

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

选择排序

选择排序是从数组的开头开始,将第一个元素和其他元素作比较,检查完所有的元素后,最小的放在第一个位置,接下来再开始从第二个元素开始,重复以上一直到最后。

function selectSort(arr) {
    const len = arr.length

    for (let i = 0; i < len - 1; i ++) {
        for (let j = i + 1; j < len; j ++) {
            if (arr[j] < arr[i]) {
                [arr[j], arr[i]] = [arr[i], arr[j]]
            }
        }
    }
    return arr
}

插入排序