随机取基准 快速排序的一种算法也算一种优化

Posted 番茄疯了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机取基准 快速排序的一种算法也算一种优化相关的知识,希望对你有一定的参考价值。

随机取基准
思想:取待排序列中任意一个元素作为基准
引入的原因:在待排序序列是不分有序时,固定选取基准是快排效率低下,要换届这种情况,就引入了随机选取基准



package
sort; import java.util.Arrays; public class TestQuickSort2 { //返回基准的下标 public static int partion(int []array,int low,int hign){ int tmp=array[low]; while(low<hign){ while(low<hign&&array[hign]>=tmp){ --hign; } if(low>=hign){ break; }else{ array[low]=array[hign]; } while(low<hign&&array[low]<=tmp){ ++low; } if(low>=hign){ break; }else{ array[hign]=array[low]; } } array[low]=tmp; return low; } public static void swap(int[]array,int start,int end){ int tmp=array[start]; array[start]=array[end]; array[end]=tmp; } public static void Quick(int[]array,int start,int end){ swap(array,start,(int)Math.random()%(end-start+1)+start); int par=partion(array,start,end); if(par>start+1){//左边还需要快排 Quick(array,start,par-1); } if(par<end-1){//右边还需要快排 Quick(array,par+1,end); } } public static void QuickSort2(int[]array){ Quick(array,0,array.length-1); } public static void main(String[] args) { // TODO Auto-generated method stub int[]array={20,3,5,0,32,22,11,8,7,9}; QuickSort2(array); System.out.println(Arrays.toString(array)); } }

 

以上是关于随机取基准 快速排序的一种算法也算一种优化的主要内容,如果未能解决你的问题,请参考以下文章

ACM教程 - 快速排序(常规 + 尾递归 + 随机基准数)

快速排序的性能和名字一样优秀

几种排序算法

快速排序算法C#实现

快速排序算法详解及代码实现

算法:快速排序(ScratchPython)