请用【java】帮我写一段快排代码,并帮我讲解下实现逻辑!智慧职教自动批改作业!作业考试,未批,打满分,确认批阅,下一份
时间: 2024-09-14 19:16:14 浏览: 60
当然可以,以下是使用Java实现快速排序算法的一个基本版本:
```java
public class QuickSort {
public void quickSort(int[] arr, int low, int high) {
if (low < high) {
// 选择一个基准元素(通常取中间位置)
int pivotIndex = partition(arr, low, high);
// 对基准左边和右边的部分分别递归地进行快速排序
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
private int partition(int[] arr, int low, int high) {
// 选择最后一个元素作为基准
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
// 如果当前元素小于或等于基准,则交换并移动指针
if (arr[j] <= pivot) {
i++;
swap(arr, i, j);
}
}
// 将基准元素放到正确的位置
swap(arr, i + 1, high);
return i + 1;
}
private 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 = {9, 7, 5, 11, 12, 2, 14, 3, 10};
QuickSort sort = new QuickSort();
sort.quickSort(arr, 0, arr.length - 1);
System.out.println("Sorted array: ");
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
实现逻辑简述:
- `quickSort`函数是主入口,它接收一个数组、最低索引和最高索引。如果低索引小于高索引,就进入循环。
- `partition`函数用于分区操作,它选取数组的最后一个元素作为基准(pivot),并将所有小于基准的元素移到基准左侧,大于基准的元素移到右侧,返回基准的新位置。
- 主循环里,我们会不断调用`quickSort`函数,针对基准左右两侧进行递归,直到整个序列有序。
- `swap`函数是一个辅助方法,用于交换数组中两个元素的位置。
运行上述代码,你会得到一个按照升序排列的整数数组。
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)