快速排序是一种高效的排序算法,其基本思想是采用分治法。在Java中,快速排序的实现可以如下所示:
```java
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
// pi 是分区索引,arr[pi] 的位置已经确定了
int pi = partition(arr, low, high);
// 通过递归调用分别对pi的左右两部分进行排序
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
public static int partition(int[] arr, int low, int high) {
// 选择最后一个元素作为主元(pivot)
int pivot = arr[high];
int i = (low - 1); // 小于pivot的元素的索引
for (int j = low; j < high; j++) {
// 如果当前元素小于等于pivot
if (arr[j] <= pivot) {
i++;
// 交换 arr[i] 和 arr[j] 的位置
swap(arr, i, j);
}
}
// 交换 arr[i+1] 和 arr[high](或pivot)的位置,确保pivot处于正确的位置
swap(arr, i + 1, high);
return i + 1; // 返回pivot的位置,这个位置已经确定了
}
//交换数组中的两个元素的方法,可以单独抽出来作为工具类方法使用。 也可以直接在 partition 方法内使用匿名方法。看实际需求而定。
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
使用快速排序时,你可以创建一个数组并调用 `quickSort` 方法进行排序。例如:
```java
public class Main {
public static void main(String[] args) {
int[] arr = {10, 7, 8, 9, 1, 5}; // 待排序数组
QuickSort.quickSort(arr, 0, arr.length - 1); // 对数组进行排序操作
for (int i = 0; i < arr.length; i++) { // 打印排序后的数组元素
System.out.print(arr[i] + " ");
}
}
}
```