「排序算法」—图解双轴快排( 二 )


收尾工作在执行完这一趟即k=right之后 , 即开始需要将pivot1和pivot2的数值进行交换
swap(arr, start, left);swap(arr, end, right);
「排序算法」—图解双轴快排文章插图
然后三个区间根据编号递归执行排序函数即可 。
双轴快排代码在这里 , 分享下个人实现双轴快排的代码:
import java.util.Arrays;public class 双轴快排 {public static void main(String[] args) {int a[]= {7,3,5,4,8,5,6,55,4,333,44,7,885,23,6,44};dualPivotQuickSort(a,0,a.length-1);System.out.println(Arrays.toString(a));}private static void dualPivotQuickSort(int[] arr, int start, int end) {if(start>end)return;//参数不对直接返回if(arr[start]>arr[end])swap(arr, start, end);int pivot1=arr[start],pivot2=arr[end];//储存最左侧和最右侧的值//(start , left]:左侧小于等于pivot1 [right,end)大于pivot2int left=start,right=end,k=left+1;while (k=pivot2) {//如果全部小于直接跳出外层循环if(right--==k)break ;}if(k>=right)break ;swap(arr, k, right);}}swap(arr, start, left);swap(arr, end, right);dualPivotQuickSort(arr, start, left-1);dualPivotQuickSort(arr, left+1, right-1);dualPivotQuickSort(arr, right+1, end);}static void swap(int arr[],int i,int j){int team=arr[i];arr[i]=arr[j];arr[j]=team;}}执行结果为:
「排序算法」—图解双轴快排文章插图
最后给大家准备一波资料私信回复bigsai免费领取哦 。
「排序算法」—图解双轴快排文章插图
好啦 , 到这里双轴快排就实现完成啦 。 至于算法分析 , 希望在评论区和你们讨论哦!
原创不易 , 欢迎关注、点赞、转发、收藏 , 您的支持是我创作的不断动力 。