java写一段快速排序算法
时间: 2023-03-13 21:36:04 浏览: 55
public static 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];
// 把分界点的值赋值给临时变量
int temp = arr[low];
// 把分界点的值赋值给最低位
arr[low] = pivot;
// 把临时变量的值赋值给分界点
arr[middle] = temp;
// 定义两个指针
int i = low;
int j = high;
while (i < j) {
// 从右往左找到第一个比分界点小的数
while (arr[j] >= pivot && i < j) {
j--;
}
// 从左往右找到第一个比分界点大的数
while (arr[i] <= pivot && i < j) {
i++;
}
// 交换
if (i < j) {
int temp2 = arr[i];
arr[i] = arr[j];
arr[j] = temp2;
}
}
// 把分界点的值放到正确的位置
arr[low] = arr[i];
arr[i] = pivot;
// 递归处理左右两边的数组
quickSort(arr, low, j - 1);
quickSort(arr, j + 1, high);
}