排序算法(持续更新)

一、快速排序

基本思路

双指针+递归分治(本质是一个创建二叉树搜索树的过程)

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

let testArray = [3, 1, 2, 5, 6, 4];
let quickSort = (array) => {
    if (array.length < 2) return array;
    let leftArray = [];
    let rightArray = [];
    let baseDigit = array[0];
    array.forEach(element => {
        if (element < baseDigit) {
            leftArray.push(element);
        } else if (element > baseDigit) {
            rightArray.push(element);
        }
    });
    return quickSort(leftArray).concat(baseDigit, quickSort(rightArray))
};
quickSort(testArray);

 二、插入排序

        let arr = [5,3,7,2,6];

        //插入排序
        function insertSort(arr) {
            for (let i = 1; i < arr.length; i++) {
                //当前要处理的数
                let temp = arr[i];
                let j = i - 1;
                while (j >= 0 && arr[j] > temp) {
                    //如果前一个数大于后一个数,将前一个数往后移一位
                    arr[j + 1] = arr[j]
                    j--
                }
                //此时的j是要处理的数排序后应该在的位置
                arr[j+1] = temp
            }
            return arr;
        }
        console.log("插入排序arr", insertSort(arr))

 

posted @ 2021-08-06 15:38  盼星星盼太阳  阅读(39)  评论(0)    收藏  举报