分治快速排序Java
时间: 2024-10-12 14:03:53 浏览: 34
分治快速排序是一种高效的排序算法,它基于“分而治之”的策略。在Java中,基本的快速排序通常通过以下几个步骤实现:
1. **选择基准**(Pivot):从数组中随机选取一个元素作为基准。
2. **分割**(Partition):将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素大于等于基准。这一步通常使用两个指针(左边小于基准,右边大于等于基准),交换元素的位置来完成。
3. **递归排序**:对左右两部分分别进行同样的操作,直到每个子数组只剩下一个元素,排序结束。
4. **合并**(Combine):当所有子数组都有序后,将它们合并成一个有序数组。
以下是简单的Java实现示例:
```java
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
// 分割点的选择可以有多种策略,这里简单地取中间值
int pivotIndex = partition(arr, low, high);
// 对基准两侧的子数组递归应用快速排序
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] <= pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high); // 将基准放到正确位置
return i + 1;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
阅读全文