快速排序是一种常用的排序算法,其基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序。
以下是一个使用Java实现的快速排序的例子:
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
// 找pivot元素的正确位置
int pivotIndex = partition(arr, low, high);
// 分别对pivot元素左右两部分进行快速排序
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
// 选择最右边的元素作为pivot
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
// 交换arr[i]和arr[j]
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 将pivot元素放到正确的位置
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
public static void main(String[] args) {
int[] arr = {10, 7, 8, 9, 1, 5};
int n = arr.length;
quickSort(arr, 0, n - 1);
System.out.println("排序后的数组:");
for (int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
}
}
代码说明
在这个例子中,quickSort
方法是快速排序的入口点,它接受一个数组和两个索引作为参数,表示排序的范围。partition
方法是快速排序的核心,它将数组分为两部分,并返回pivot元素的正确位置。main
方法提供了一个简单的测试用例,演示了如何使用快速排序方法对一个数组进行排序。