java 实现快速排序,加上详细中文代码注释
时间: 2023-02-15 09:51:06 浏览: 113
。
快速排序是一种分治算法,通过递归地交换数组中的元素来排序。
以下是 Java 实现快速排序的代码,带有详细的中文注释:
```
public class QuickSort {
public static void main(String[] args) {
int[] arr = {9, 8, 7, 6, 5, 4, 3, 2, 1};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0)
return;
if (low >= high)
return;
// 挑选基准元素
int middle = low + (high - low) / 2;
int pivot = arr[middle];
// 将小于等于基准元素的数移到左边
// 将大于基准元素的数移到右边
int i =
相关问题
使用Java代码编写快速排序,并加上相应注释
好的,以下是使用Java代码编写快速排序的示例,已加上注释:
```java
public class QuickSort {
// 定义快速排序方法
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
// 分区并获取分区点
int pivot = partition(arr, low, high);
// 对分区点左边的区域递归进行快速排序
quickSort(arr, low, pivot - 1);
// 对分区点右边的区域递归进行快速排序
quickSort(arr, pivot + 1, high);
}
}
// 定义分区方法
public static int partition(int[] arr, int low, int high) {
// 选取数组最后一个元素作为分区点
int pivot = arr[high];
// 定义左指针和右指针
int left = low;
int right = high - 1;
// 进行分区操作,将小于分区点的元素放到左区间,大于等于分区点的元素放到右区间
while (left <= right) {
while (left <= right && arr[left] < pivot) {
left++;
}
while (left <= right && arr[right] >= pivot) {
right--;
}
if (left < right) {
swap(arr, left, right);
}
}
// 将分区点放到正确的位置上
swap(arr, left, high);
// 返回分区点的位置
return left;
}
// 定义交换数组元素的方法
public 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 = {3, 1, 5, 7, 2, 4, 9, 6, 8};
quickSort(arr, 0, arr.length - 1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
```
注释中详细说明了代码的每一个部分的作用和实现方法。
java实现快速排序并给出注释
以下是 Java 实现快速排序的代码和注释:
```java
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivotIndex = partition(arr, left, right); // 获取基准值的位置
quickSort(arr, left, pivotIndex - 1); // 对基准值左边的子数组进行快速排序
quickSort(arr, pivotIndex + 1, right); // 对基准值右边的子数组进行快速排序
}
}
private static int partition(int[] arr, int left, int right) {
int pivot = arr[left]; // 选择第一个元素作为基准值
int i = left, j = right;
while (i < j) {
while (i < j && arr[j] >= pivot) { // 从右往左找到第一个小于基准值的元素
j--;
}
if (i < j) {
arr[i++] = arr[j];
}
while (i < j && arr[i] < pivot) { // 从左往右找到第一个大于等于基准值的元素
i++;
}
if (i < j) {
arr[j--] = arr[i];
}
}
arr[i] = pivot; // 将基准值放到正确的位置上
return i;
}
```
注释中解释了快速排序的基本思想和实现过程,包括如何选择基准值、如何划分子数组、如何递归地进行快速排序等。
阅读全文