这是学习笔记,想要查看动态效果的,可以查看排序

一、冒泡排序

描述:比较相邻的元素,如果前者比后者大,就交换两者。
时间复杂度:O(n^2)

/*
 * @desc 冒泡排序
 * @param {Array} list 需要排序的数组(以number类型数组为例)
 */
function bubbleSort(list) {
    const { length } = list;
    for(let i = 0; i < length - 1; i++) {
        for(let j = i + 1; j < length; j++) {
            if(list[i] > list[j]) {
                [list[i], list[j]] = [list[j], list[i]];
            }
        }
    }
    return list;
}

二、选择排序

描述:对数组进行循环,每次找到最小值的索引,然后进行交换。
时间复杂度:O(n^2)

/*
 * @desc 选择排序
 * @param {Array} list 需要排序的数组(以number类型数组为例)
 */
function selectSort(list) {
    const { length } = list;
    let minIndex = null;
    for(let i = 0; i < length - 1; i++) {
        minIndex = i;
        for(let j = i + 1; j < length; j++) {
            if(list[j] < list[minIndex]) {
                minIndex = j;
            }
        }
        [list[i], list[minIndex]] = [list[minIndex], list[i]];
    }
    return list;
}

三、插入排序

描述:对数组进行循环,每次把循环到的数据拿出来,和下标前面的数据进行比较。
时间复杂度:O(n^2)

function insertSort(list) {
    const { length } = list;
    for(let i = 1; i < length; i++) {
        let key = list[i], j = i - 1;
        while(list[j] > key) {
            list[j + 1] = list[j];
            j--;
        }
        list[j + 1] = key;
    }
    return list;
}

喆喆
74 声望7 粉丝

小白一枚!!!