注释这段代码import java.util.Scanner;public class QuickSort { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] nums = new int[n]; for (int i = 0; i < n; i++) { nums[i] = sc.nextInt(); } quickSort(nums, 0, n - 1); for (int num : nums) { System.out.print(num + " "); } } private static void quickSort(int[] nums, int left, int right) { if (left >= right) { return; } int i = left, j = right; int pivot = nums[left]; while (i < j) { while (i < j && nums[j] >= pivot) { j--; } nums[i] = nums[j]; while (i < j && nums[i] <= pivot) { i++; } nums[j] = nums[i]; } nums[i] = pivot; quickSort(nums, left, i - 1); quickSort(nums, i + 1, right); }}
时间: 2024-02-14 21:13:10 浏览: 110
Einleser:java.util.Scanner 的示例
好的,下面是代码的注释:
```java
import java.util.Scanner;
public class QuickSort {
public static void main(String[] args) {
// 创建 Scanner 对象,用于读入数据
Scanner sc = new Scanner(System.in);
// 读入要排序的数的个数
int n = sc.nextInt();
// 创建数组,用于存储要排序的数
int[] nums = new int[n];
// 读入要排序的数
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
// 调用 quickSort 方法进行排序
quickSort(nums, 0, n - 1);
// 输出排序后的结果
for (int num : nums) {
System.out.print(num + " ");
}
}
private static void quickSort(int[] nums, int left, int right) {
// 如果左指针大于等于右指针,表示已经排好序了,直接返回
if (left >= right) {
return;
}
// 初始化左右指针和基准数
int i = left, j = right;
int pivot = nums[left];
// 双指针法,将数组分为两个部分
while (i < j) {
// 从右往左找小于基准数的数
while (i < j && nums[j] >= pivot) {
j--;
}
// 将小于基准数的数移到左边
nums[i] = nums[j];
// 从左往右找大于基准数的数
while (i < j && nums[i] <= pivot) {
i++;
}
// 将大于基准数的数移到右边
nums[j] = nums[i];
}
// 把基准数放到中间位置
nums[i] = pivot;
// 递归地对左右两部分进行排序
quickSort(nums, left, i - 1);
quickSort(nums, i + 1, right);
}
}
```
这段代码主要实现了快速排序算法,通过注释可以更好地理解代码的逻辑。其中,`main` 方法主要是读入数据,调用 `quickSort` 方法进行排序,并输出排序后的结果;`quickSort` 方法实现了快速排序算法,其中使用了双指针法来将数组分为两部分,然后递归地对这两部分进行排序。
阅读全文