快速排序:
private static void quickSort(int[] arr, int low, int high) {
if (low >= high) {
return;
}
int central = arr[low];
int left = low;
int right = high;
int pos = 1;
while (left < right) {
if (pos == -1) {
//到左边操作
if (arr[left] > central) {
arr[right] = arr[left];
pos = 1;
right--;
} else {
while (arr[left] <= central && left < right) {
left++;
}
}
} else {
//到右边操作
if (arr[right] < central) {
arr[left] = arr[right];
pos = -1;
left++;
} else {
while (arr[right] >= central && left < right) {
right--;
}
}
}
}
arr[left] = central;
//将pivot中心轴(也就是一个元素),放在left=right相等时的这个索引上
//将左右子序列提取出来,单独作为数组,重复上面的操作
quickSort(arr, low, left - 1);
quickSort(arr, right + 1, high);
}
浙公网安备 33010602011771号