java分治算法实现快速排序
时间: 2024-04-04 10:28:17 浏览: 117
Java中的分治算法实现快速排序的步骤如下:
1. 选择一个基准元素(pivot),可以是数组中的任意一个元素。
2. 将数组分成两部分,小于等于基准元素的放在左边,大于基准元素的放在右边。
3. 对左右两部分分别进行递归调用快速排序算法,直到每个部分只有一个元素或为空。
4. 合并左右两部分,得到最终排序结果。
下面是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[low]; // 选择第一个元素作为基准元素
int i = low + 1; // 左指针
int j = high; // 右指针
while (i <= j) {
if (arr[i] <= pivot) {
i++;
} else if (arr[j] > pivot) {
j--;
} else {
swap(arr, i, j); // 交换左右指针所指向的元素
}
}
swap(arr, low, j); // 将基准元素放到正确的位置上
return j; // 返回基准元素的位置
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int[] arr = {5, 2, 9, 1, 7, 6, 3};
quickSort(arr, 0, arr.length - 1);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
阅读全文