Bootstrap

快速排序简单实现

/**
 * 选择基准数-一般是最左边的,也就是第一个arr[0](如果是左边第一个,则下一步则从右边开始,如果是右边第一个,则从左边开始)
 * 从右边开始,如果比基准数大,左移,直到找到比基准数小的,停止,开始左边,如果比基准数小,右移,直到找到比基准数大的
 * 两个找到的数左右交换,继续第二步,直到左边和右边相遇
 * 把基准数和相遇位置数互换,这个时候基准数就是区分两边大小的标准数
 * 基准数左边和右边各自分别进行以上操作-分而治之
 *
 * @param arr
 */
private static void quickSort(int[] arr, int left, int right) {
    if(left>=right){
        return;
    }
    int i = left;
    int j = right;
    int pivot = arr[left];
    while (i < j) {
        while (i < j && arr[j] >= pivot) {
            j--;
        }

        while (i < j && arr[i] <= pivot) {
            i++;
        }

        int temp = arr[j];
        arr[j] = arr[i];
        arr[i] = temp;
    }

    arr[left]=arr[i];
    arr[i]=pivot;
    quickSort(arr,left,i-1);
    quickSort(arr,i+1,right);
}
;