js实现快排

159 阅读1分钟

花了两天晚上的时间,终于成功手写了快排,记录一下。

function quickSort(left, right, arr) {
        if (left < right) {
                let l = left;
                let r = right;
                const splitNum = arr[l];
                while (l < r) {
                        while (arr[r] > splitNum && l < r) {
                                r--;
                        }
                        if (arr[r] < splitNum) {
                                arr[l++] = arr[r];
                        }

                        while (arr[l] <= splitNum && l < r) {
                                l++;
                        }
                        if (arr[l] > splitNum) {
                                arr[r--] = arr[l];
                        }
                }
                arr[l] = splitNum;
                quickSort(left, l - 1, arr);
                quickSort(l + 1, right, arr);
        } else {
                return;
        }
}

const arr = [3, 5, 6, 4, 3, 7, 8, 9, 5];
quickSort(0, arr.length - 1, arr);