Java实现快速排序算法
2017-09-11 20:40
393 查看
排序算法采用的是分而治之的方法,刚开始需要选择一个基准值,以这个基准值,把数组分成两部分,左边小于基准值的数组,右边大于基准值的数组(假设我们要实现从小到大的排列),然后在对左边序列选取基准值再把该序列一分为二,右边序列也一样,直到分到不能分为止,一直递归下去,就自然成为有序序列,快速排序的平均时间复杂度为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); } }
相关文章推荐
- 一个简单的冒泡排序和快速排序算法java实现
- 快速排序算法的JAVA实现
- java实现快速排序算法
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- java快速排序算法的简单实现
- 利用java实现数据结构中常用的插入排序和快速排序算法
- 利用java实现数据结构中常用的插入排序和快速排序算法
- 快速排序算法的Java实现
- 快速排序算法的JAVA实现 .
- 快速排序算法Java实现
- Java实现快速排序算法(Quicktsort)
- 快速排序算法原理及java递归实现
- java实现冒泡、选择、快速排序算法
- 快速排序算法JAVA实现
- java实现快速排序算法
- java 快速排序算法--归并排序的实现
- 利用java实现数据结构中常用的插入排序和快速排序算法
- 快速排序算法原理及java实现
- 利用java实现数据结构中常用的插入排序和快速排序算法
- 用java实现快速排序算法