用Java递归写一个快速排序并注释每一行代码
时间: 2023-03-20 17:03:35 浏览: 112
好的,以下是使用Java递归写的快速排序代码,每一行都有注释说明:
```java
public class QuickSort {
// 快速排序函数,输入待排序数组和数组长度
public void quickSort(int[] arr, int start, int end) {
if (start < end) { // 如果数组长度大于1
int pivotIndex = partition(arr, start, end); // 将数组划分为两部分,并返回中间值的下标
quickSort(arr, start, pivotIndex - 1); // 递归地对左半部分进行快速排序
quickSort(arr, pivotIndex + 1, end); // 递归地对右半部分进行快速排序
}
}
// 划分函数,输入待划分数组和数组起始下标、结束下标
public int partition(int[] arr, int start, int end) {
int pivot = arr[end]; // 将最后一个元素作为中间值
int i = start - 1; // 定义 i 为数组左端的下标
for (int j = start; j < end; j++) { // 遍历数组
if (arr[j] < pivot) { // 如果当前元素小于中间值
i++; // 将 i 后移一位
int temp = arr[i]; // 将 i 和 j 位置的元素交换
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1]; // 将 i+1 和 end 位置的元素交换
arr[i + 1] = arr[end];
arr[end] = temp;
return i + 1; // 返回中间值的下标
}
// 测试用例
public static void main(String[] args) {
int[] arr = {5, 2, 8, 3, 9, 4, 1, 7, 6};
QuickSort qs = new QuickSort();
qs.quickSort(arr, 0, arr.length - 1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
```
注释中解释了每一行代码的功能,包括:
1. 定义类名和类中的快速排序函数
2. 检查输入数组长度,若大于1则开始快速排序
3. 划分函数,将数组划分为左右两部分,并返回中间值的下标
4. 定义中间值和左端下标,并遍历数组
5. 若当前元素小于中间值,则将该元素与左端元素交换
6. 将左端下标后移一位,并将左端元素与当前元素交换
7. 将 i+1 和 end 位置的元素交换,并返回中间值的下标
8. 定义测试用例,测试快速排序函数
9. 输出排序后的数组
阅读全文