Java中怎么实现一个 快速排序算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
快速排序的基本思想是通过一个枢轴,将比枢轴小的数排在枢轴左边,将比枢轴大的数字排在枢轴右边,然后再对两边分别快速排序。
如图所示
输入:数据元素数组r,划分序列区间[low..high]
输出:将序列划分为两个子序列并返回枢轴元素的位置
private int partition(Object[] r, int low, int high){
Object pivot = r[low]; //使用r[low]作为枢轴元素while (low<high){ //从两端交替向内扫描while(low<high&&strategy.compare(r[high],pivot)>=0) high--;
r[low] = r[high]; //将比pivot 小的元素移向低端while(low<high&&strategy.compare(r[low],pivot)<=0) low++;
r[high] = r[low]; //将比pivot 大的元素移向高端}
r[low] = pivot; //设置枢轴return low; //返回枢轴元素位置}
输入:数据元素数组r,数组r 的待排序区间[low..high]
输出:数组r 以关键字有序
public void quickSort(Object[] r, int low, int high){if (low<high){int pa = partition(r,low,high);
quickSort(r,low,pa-1);
quickSort(r,pa+1,high);
}
}
关于Java中怎么实现一个 快速排序算法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注天达云行业资讯频道了解更多相关知识。