var arr = [4, 1, 6, 9, 3, 2, 8, 7];

    function swap(arr, a, b) {
    var temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
    }

    function quickSort2(arr, begin, end) {
    if (begin >= end - 1) return;
    var left = begin;
    var right = end;
    do {
    do left++; while (left < right && arr[left] < arr[begin]);
    do right—; while (right > left && arr[right] > arr[begin]);
    if (left < right) swap(arr, left, right)
    } while (left < right)
    var swapPoint = left == right ? right - 1 : right;
    swap(arr, begin, swapPoint);
    quickSort2(arr, begin, swapPoint);
    quickSort2(arr,swapPoint + 1,end);
    }

    function quickSort(arr) {
    quickSort2(arr, 0, arr.length)
    }
    quickSort(arr)
    console.log(arr);

    /*
    标准快速排序: 从数组的两头开始查找,与选定的一个元素(leader)比较,
    有三种情况
    left < right : 左边找到比leader大的停止,右边找到比leader小的停止,
    这两个元素进行交换
    left = right :①从左边找的一直比leader小就一直往后,直到找到第一个比leader大的元素停止
    从右边找的一直比leader大就一直往前,直到找到了left停止寻找的那个元素,
    这时候数组寻找完成了,把leader放到中间,让左边都比leader小,右边都比leader大
    就需要leader和right-1交换

    left > right : 这时候只需要leader和right交换就行了,因为这时候left > right,查找完毕。
    /