js前端算法回顾

128 阅读1分钟

排序算法

1. 冒泡排序

173091f3988323e7.jpg

function bubbleSort(arr) {
    // 如果不是数组,或者长度小于等于1,直接返回arr
    if(!Array.isArray(arr) || arr.length <= 1) return arr
    
    var flag = true
    // 这里注意外层循环的i从1开始,每次循环最大的都会放在最后,所以内层循环就会减去i
    for (var i = 1; i < arr.length && flag; i++) {
        flag = false
        for(var j = 0; j < arr.length - i; j++) {
            // 前后对比,交换位置
            if (arr[j] > arr[j + 1]) {
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
                flag = true
            }
        }
    }
    return arr
}

2. 插入排序

173091f399326210.jpg

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

数组去重

set

var arr = [1, 1, 2, 3, 3, 4]
var arr2 = [...new Set(arr)]
console.log(arr2)

循环去重

function unique(arr) {
    var temp = []
    for (var i = 0; i < arr.length; i++) {
        if (temp.indexOf(arr[i]) === -1) {
            temp.push(arr[i])
        }
    }
    return temp
}