Java的快速排序可以使用以下代码来实现:
public void quickSort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0)
return;
if (low >= high)
return;
// 找寻基准数据的正确索引
int middle = low + (high - low) / 2;
int pivot = arr[middle];
// 将基准数据放在最高位置
arr[middle] = arr[high];
arr[high] = pivot;
// 数组中比基准小的放在左边,比基准大的放在右边
int i = low, j = high;
while (i < j) {
while (i < j && arr[i] <= pivot) {
i++;
}
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 最后将基准为与i和j相等位置的数字交换
arr[high] = arr[i];
arr[i] = pivot;
// 递归,继续排序基准左边和右边的数字
quickSort(arr, low, j - 1);
quickSort(arr, j + 1, high);
}
上面的代码中,arr
是要进行排序的数组,low
和 high
分别是数组的左端点和右端点。在函数中,我们先将数组的中间元素作为基准数据,然后将基准数据放到数组的最高位置。接着,我们使用两个指针 i
和 j
分别指向数组的左端点和右端点,并使用循环不断移动这两个指针,直到 i