JAVA中快速排序的题解
时间: 2023-06-23 14:47:49 浏览: 65
快速排序是一种常用的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再按此方法对这两部分记录分别进行快速排序,以达到整个序列有序的目的。
以下是JAVA中快速排序的实现代码:
```java
public class QuickSort {
public static void sort(int[] arr, int start, int end) {
if (start < end) {
int pivot = partition(arr, start, end);
sort(arr, start, pivot - 1);
sort(arr, pivot + 1, end);
}
}
private static int partition(int[] arr, int start, int end) {
int pivot = arr[start];
while (start < end) {
while (start < end && arr[end] >= pivot) {
end--;
}
arr[start] = arr[end];
while (start < end && arr[start] <= pivot) {
start++;
}
arr[end] = arr[start];
}
arr[start] = pivot;
return start;
}
public static void main(String[] args) {
int[] arr = {5, 6, 8, 1, 3, 2, 9, 4, 7};
sort(arr, 0, arr.length - 1);
for (int i : arr) {
System.out.print(i + " ");
}
}
}
```
在快速排序中,需要选择一个元素作为枢轴(pivot),这里选择第一个元素作为枢轴。然后将序列中的元素分为两部分,一部分比枢轴小,一部分比枢轴大。然后再对这两部分分别进行快速排序,最终得到有序序列。
在上述代码中,partition方法是关键,它实现了分割序列的功能。首先将枢轴存储在pivot变量中,然后从序列的两端开始遍历,找到第一个比枢轴小的元素和第一个比枢轴大的元素,然后将它们交换位置。重复这个过程直到start和end重合,最后将枢轴放到这个位置上。
sort方法是递归实现的,每次选择一个枢轴,然后将序列分为两部分,分别对这两部分进行快速排序,直到序列有序为止。
最后在main方法中,我们对一个无序序列进行快速排序,并输出有序序列。