//快速排序
public static void quickSort(int[] arr,int start,int end) {
if(start<end) {
int point=partition(arr,start,end);
quickSort(arr, start, point-1);
quickSort(arr, point+1, end);
}
}
// 定义两个指针控制比较的值
// 第一次将比基准值小的放左边,大的放右边,最后将基准值与最后左右指针重叠的元素交换
// 递归便利左边,递归便利右边
private static int partition(int[] arr, int start, int end) {
int pi=arr[start];
int left=start;
int right=end;
while(left<right) {
while(left<right&&arr[right]>=pi)right--;
while(left<right&&arr[left]<=pi)left++;
if(left>=right)break;
arr[left]=arr[left]+arr[right]-(arr[right]=arr[left]);
}
arr[start]=arr[left];
arr[left]=pi;
return left;
}
快速排序算法
最新推荐文章于 2024-09-09 23:03:13 发布
本文详细介绍了如何使用Java编写快速排序算法,包括quickSort方法和partition辅助函数的工作原理,通过基准值划分数组并递归处理左右两侧,最终完成数组的排序。
摘要由CSDN通过智能技术生成