Java实现快速排序算法
来源:互联网 发布:如何制作淘宝图片 编辑:程序博客网 时间:2024/06/11 11:42
排序算法采用的是分而治之的方法,刚开始需要选择一个基准值,以这个基准值,把数组分成两部分,左边小于基准值的数组,右边大于基准值的数组(假设我们要实现从小到大的排列),然后在对左边序列选取基准值再把该序列一分为二,右边序列也一样,直到分到不能分为止,一直递归下去,就自然成为有序序列,快速排序的平均时间复杂度为nlog(n),但是也有缺点就是快速排序算法的稳定性不足,对于相同大小的值,因为两个值的位置不同而最后排序出来的序列不同,(可能先出现的排在前面,也可能排在后面),下面是Java实现的代码
public class sort_quick { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] data={6,3,7,4,1}; new sort_quick().sort(data,0,4); for(int i=0;i<5;i++) System.out.println(data[i]); } public void sort(int[] data,int low,int hight){ //运用三个中找一个合适的作为基准! //找基准的方法有三种,第一:就以第一个为基准 //第二:随机 //第三:找第一和中间和最后三个数之间的中间值 if(low>hight) return; int mid = (low+hight)/2; if(data[hight]<data[mid]){ int temp =data[hight]; data[hight]=data[mid]; data[mid]=temp; } if(data[hight]<data[low]){ int temp =data[hight]; data[hight]=data[low]; data[low]=temp; } if(data[mid]>data[low]){ int temp =data[mid]; data[mid]=data[low]; data[low]=temp; } int key=data[low]; while(low<hight){ while(low<hight&&data[hight]>key){ hight--; } if(low<hight)data[low++]=data[hight]; while(low<hight&&data[low]<key){ low++; } if(low<hight)data[hight--]=data[low]; } data[low]=key; sort(data,0, low-1); sort(data,low+1,hight); }}
阅读全文
0 0
- java实现快速排序算法
- java实现快速排序算法
- 算法-快速排序-java实现
- 快速排序算法Java实现
- java算法实现快速排序
- java实现快速排序算法
- 快速排序算法-java实现
- 快速排序算法Java实现
- 快速排序算法java实现
- java实现快速排序算法
- Java实现快速排序算法
- 快速排序算法Java实现
- Java实现快速排序算法
- 快速排序算法java实现
- java实现快速排序算法
- Java 实现快速排序算法
- 快速排序算法java实现
- java实现快速排序算法
- 数据分析师面试
- JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截
- AJAX实现异步刷新
- ScrollView
- Retrofit2源码的阅读
- Java实现快速排序算法
- 51 nod 最小1的数量 数位DP
- Android Studio找不到真机设备
- ArrayList的扩容
- 棋盘问题(POJ1321)
- 22. Generate Parentheses
- 中位数计数
- css3不完全兼容性
- 字节数组流,文件流,数据流,转换流