您的位置:首页 > 其它

快速排序

2016-02-18 22:48 302 查看
<span style="font-size:18px;">/**
* 快速排序
* @author xxxu
*
*/
public class QuickSort {
private void exch(int[] a,int i,int j){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
private int partition(int[] a,int lo,int hi){
int x=a[hi];//每次比较的数
int i=lo-1;
for (int j = lo; j < hi; j++) {
if(a[j]<=x){
i++;
exch(a,j,i);
}
}
//j=hi时交换,也就是最后一个,到这里为止,数组前部分的数比x小,后部分的数比x大,不要问为什么,自己去用笔一步一步执行
exch(a,hi,i+1);
return i+1;
}
public void sort(int[] a){
int lo=0;
int hi=a.length-1;
sort(a,lo,hi);
}
private void sort(int[] a, int lo, int hi) {
if(hi<=lo){
return;
}
int mid=partition(a, lo, hi);
sort(a,lo,mid-1);
sort(a,mid+1,hi);
}

public void show(int[] a){
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: