码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-18 11:34:10      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:pack   一个   arrays   todo   generated   --   math   eth   array   

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



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)); } }

 

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

标签:pack   一个   arrays   todo   generated   --   math   eth   array   

原文地址:https://www.cnblogs.com/ioio2/p/9054921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!