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);
}
}
快速排序
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 选择排序 对于任何输入,时间为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实现几种基本的排序算法,并把排序的过程图形化显示。其实算法还是挺有趣的 ^ ^. 选择排序...