用java写一个快速排序
时间: 2023-03-11 14:01:36 浏览: 63
我可以给你一个快速排序的Java示例:
public class QuickSort {
public static void main(String[] args) {
// 指定数组
int[] nums = {10,5,3,6,4,9,8,7,2,1}; // 调用快速排序
quickSort(nums, 0, nums.length - 1); // 打印排序后的结果
for(int num : nums) {
System.out.print(num + " ");
}
} public static void quickSort(int[] nums, int low, int high) {
if(low < high) {
// 找寻基准数据的正确索引
int index = getIndex(nums, low, high); // 进行迭代对index之前和之后的数据进行相同的操作使整个数组变成有序
quickSort(nums, 0, index - 1);
quickSort(nums, index + 1, high);
}
} public static int getIndex(int[] nums, int low, int high) {
// 基准数据
int tmp = nums[low];
while(low < high) {
// 当队尾的元素大于等于基准数据时,向前挪动high指针
while(low < high && nums[high] >= tmp) {
high--;
}
// 如果队尾元素小于tmp了,需要将其赋值给low
nums[low] = nums[high];
// 当队首元素小于等于tmp时,向前挪动low指针
while(low < high && nums[low] <= tmp) {
low++;
}
// 当队首元素大于tmp时,需要将其赋值给high
nums[high] = nums[low];
}
// 跳出循环时low和high相等,此时的low或high就是tmp的正确索引位置
// 由原理部分可以很清楚的知道low位置的值并不是tmp,所以需要将tmp赋值给arr[low]
nums[low] = tmp;
return low; // 返回tmp的正确位置
}
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)