快速排序

103 阅读1分钟
        var arr = [10, 8, 6, 1, 4, 5, 2, 7];

        function quick(arr, left, right) {
            //快速排序设定基准值
            let pivot = arr[left]
            let i = left
            let j = right
            //两个指针相互移动
            while (i < j) {
                while (i < j && arr[j] >= pivot) {
                    //右指针大于基准值向左移动
                    j--
                };
                if (i < j) {
                    arr[i] = arr[j];
                    i++;
                    // arr[i++]
                }
                while (i < j && arr[i] <= pivot) {
                    i++
                }
                if (i < j) {
                    arr[j] = arr[i];
                    j--
                }
            }
            arr[i] = pivot;
            if (i > left) quick(arr, left, i - 1);
            if (j < right) quick(arr, i + 1, right)
            return arr
        }

        function sort(arr) {
            quick(arr, 0, arr.length - 1)
            return arr;
        }

        console.log(sort(arr));