import org.junit.Test;
import java.util.Arrays;
/**
* Created by wc on 2018/4/28.
*/
public class 快速排序 {
@Test
public void test(){
int[] array={31,21,59,68,12,40};
sort(array,0,array.length-1);
System.out.print(Arrays.toString(array));
}
/**
* 数据量大用快排
* 必需是数组,链式结构不要使用快排
* 重复元素多,影响性能
* @param array
* @param start
* @param end
*/
public void sort(int[] array,int start,int end){
//如果起始大于结尾就返回
if(end-start<=0) return ;
int x=array[start];
int low=start;
int high=end;
boolean direction=true;
L:
while(low<high){
//从右往左
if(direction){
for(int i=high;i>low;i--){
if(array[i]<=x){
array[low++]=array[i];
high=i;
//换方向
direction=!direction;
continue L;
}
}
high=low;
}else{
for(int i=low;i<high;i++){
if(array[i]>=x){
array[high--]=array[i];
low=i;
direction=!direction;
continue L;
}
}
low=high;
}
}
array[low]=x;
sort(array,start,low-1);
sort(array,low+1,end);
}
}
快速排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 选择排序 对于任何输入,时间为O(n*n); 冒泡排序 最优(对于升序的数组,因为加入了一个跳出判断):O(n),...
- 欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1....
- 给定数组 int[] arr = {3,6,8,4,7,5,9,1,2,0};使用至少三种方法对数组arr排序(作...
- 用Objective-C实现几种基本的排序算法,并把排序的过程图形化显示。其实算法还是挺有趣的 ^ ^. 选择排序...