基础算法(一):快速排序

85 阅读1分钟

快速排序思想

1.选取一个flag节点作为一个标准,定义左右子树组。
2.讲数组的元素与flag进行比较,小于标准进入左数组,大于标准进入右数组。
3.创造一个递归的条件,讲左右子数组进行递归。

算法模版

   function quickSort(arr) {
       // 停止条件
        if (arr.length <= 1) return arr;

        // 确定锚点元素
        const index = parseInt(arr.length / 2);
        const flagValue = arr[index];

        const leftArr = [];
        const rightArr = [];

        // 获取左右子集合
        for (let i = 0; i < arr.length; i++) {
            const item = arr[i];
            if (i === index) continue;
            if (item <= flagValue) leftArr.push(item);
            else rightArr.push(item);
        }

        // 递归查询子集合
        // return [...quickSort(leftArr), flagValue, ...quickSort(rightArr)];
        return quickSort(leftArr).concat(flagValue,quickSort(rightArr))
   }