js-基础算法-个人记录

134 阅读1分钟

排序

快速排序

segmentfault.com/a/119000000…

var quickSort = function(arr) {
    if (arr.length <= 1) {return arr}
    var pointIndex = Math.floor(arr.length / 2);   // 基准位置(理论上可任意选取)[向下取整]
    var pivot = arr.splice(pivotIndex, 1)[0];  //基准数
    var left = [];
    var right = [];
    for (var i = 0; i < arr.length; i++){
        if (arr[i] < pivot) {
            left.push(arr[i]);
        } else {
            right.push(arr[i]);
        }
    }
    return quickSort(left).concat([pivot], quickSort(right));
}

选择排序

segmentfault.com/a/119000000…

在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

function selectionSort(arr) {
    var len = arr.len;
    var minIndex, temp;
    for (var i = 0; i < len - 1; i++) {
        minIndex = i;
        for (var j = i + 1; j < len; j++) {
            if (arr[j] < arr[minIndex]) {     // 寻找最小的数
                minIndex = j;                 // 将最小数的索引保存
            }
        }
        
        temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
    return arr;
}

数组去重

var myArr = [1,3,4,5,6,3,7,4];
console.log(myArr.filter((value,index,arr)=>arr.indexOf(value)===index));

算法类

链 栈

juejin.cn/post/684490…

递归

juejin.cn/post/684490…

冒泡 / 快排 - 排序类算法

LRU / 排列组合 - 应用类算法

链表 / 堆 / 栈 / 树 / 图 - 数据结构类算法

分治 / 动规 - 算法思想

深度优先 / 广度优先