快速排序,java详细示例代码,谢谢,说明请和代码之间空开2行,代码用markdown格式,谢谢
时间: 2023-03-14 14:09:35 浏览: 72
您好,下面是快速排序的Java示例代码: public class QuickSort {
public static void sort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0) {
return;
}
if (low >= high) {
return;
}
// 找寻基准数据的正确索引
int middle = getMiddle(arr, low, high);
// 进行迭代对index之间的数值进行直接排序
sort(arr, low, middle - 1);
sort(arr, middle + 1, high);
}
public static int getMiddle(int[] arr, int low, int high) {
// 基准数据
int tmp = arr[low];
while (low < high) {
// 当队尾的元素大于等于基准数据时,向前挪动high指针
while (low < high && arr[high] >= tmp) {
high--;
}
// 如果队尾元素小于tmp了,需要将其赋值给low
arr[low] = arr[high];
// 当队首元素小于等于tmp时,向前挪动low指针
while (low < high && arr[low] <= tmp) {
low++;
}
// 当队首元素大于tmp时,需要将其赋值给high
arr[high] = arr[low];
}
// 跳出循环时low和high相等,此时的low或high就是tmp的正确索引位置
// 由原理部分可以很清楚的知道low位置的值并不是tmp,所以需要将tmp赋值给arr[low]
arr[low] = tmp;
return low; // 返回tmp的正确位置
}
}