请给出快速排序java版代码带注释和解释,最后输出结果
时间: 2023-07-07 09:12:10 浏览: 46
好的,下面是快速排序的Java代码:
```java
public class QuickSort {
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivot = partition(arr, left, right); // 分区操作,返回 pivot 的索引
quickSort(arr, left, pivot - 1); // 对左边进行递归排序
quickSort(arr, pivot + 1, right); // 对右边进行递归排序
}
}
private static int partition(int[] arr, int left, int right) {
int pivot = left; // 设定基准值(pivot)
int index = pivot + 1;
for (int i = index; i <= right; i++) {
if (arr[i] < arr[pivot]) {
swap(arr, i, index);
index++;
}
}
swap(arr, pivot, index - 1);
return index - 1;
}
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 = {10, 7, 8, 9, 1, 5};
int n = arr.length;
quickSort(arr, 0, n-1);
System.out.println("排序后的数组:");
for (int i : arr) {
System.out.print(i + " ");
}
}
}
```
注释及解释:
- `quickSort` 方法:实现快速排序算法。参数 `arr` 为待排序数组,`left` 和 `right` 为待排序区间的左右端点(初始值为数组的起始和终止下标)。
- `partition` 方法:实现分区操作,即将数组中小于基准值的元素放在基准值的左边,大于等于基准值的元素放在基准值的右边。参数 `arr` 为待排序数组,`left` 和 `right` 为待排序区间的左右端点(初始值为数组的起始和终止下标)。
- `swap` 方法:实现数组中两个元素的交换。参数 `arr` 为待排序数组,`i` 和 `j` 分别为两个元素的下标。
- `main` 方法:测试快速排序算法。先定义一个待排序数组 `arr`,然后调用 `quickSort` 方法对其进行排序,最后输出排序后的数组。
运行结果:
```
排序后的数组:
1 5 7 8 9 10
```