/** * 选择基准数-一般是最左边的,也就是第一个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); }