实现一个快排,用java
时间: 2024-11-15 07:32:03 浏览: 5
Quickly3way.rar_三路快排java
快速排序是一种常用的高效排序算法,其基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分的所有数据都比另一部分的数据小,然后分别对这两部分继续进行排序,直到整个序列有序。以下是使用 Java 编程语言实现快速排序的基本步骤:
```java
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
// 选择 pivot(基准)
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) {
// 通常选择第一个元素作为 pivot
int pivotValue = arr[low];
while (low < high) {
// 将所有小于 pivot 的元素移动到左边
while (low < high && arr[high] >= pivotValue) {
high--;
}
arr[low] = arr[high];
// 将所有大于 pivot 的元素移动到右边
while (low < high && arr[low] <= pivotValue) {
low++;
}
arr[high] = arr[low];
}
arr[low] = pivotValue; // 将 pivot 放回原位置
return low;
}
public static void main(String[] args) {
int[] nums = {9, 7, 5, 11, 12, 2, 14, 3};
System.out.println("Before sorting:");
printArray(nums);
quickSort(nums, 0, nums.length - 1);
System.out.println("\nAfter sorting:");
printArray(nums);
}
private static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
}
```
在这个示例中,`quickSort()` 函数接收数组、最低索引 `low` 和最高索引 `high`,然后通过递归的方式应用快速排序。`partition()` 函数则是用于划分数组的主要部分。
阅读全文