1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| 快排算法: public static void quickSort(int[] arr, int low, int high) { // 递归设置终止条件,当只有一个元素时 if (low >= high) { return; } int i, j, tmp, t; i = low; j = high; // 设置基准位 tmp = arr[low];
while (i < j) { // 先从右边比较,满足条件则向左移动 while (arr[j] >= tmp && i<j) { j--; } // 从左边比较,满足条件则向右移动 while (arr[i] <= tmp && i<j) { i++; } // 上面2个while条件都不满足时,交换左右数据 if (i<j) { t = arr[j]; arr[j] = arr[i]; arr[i] = t; } } // i==j时,和基准位交换位置 arr[low] = arr[i]; arr[i] = tmp; quickSort(arr, low, i-1); quickSort(arr,i+1, high); }
|