快速排序本质上是插入排序,但是它在这个基础上增强了算法。
下面我们来分析一下快速排序:
有了前面的分析基础,我们在来看排序算法也就容易多了。
public class Quick_Sort {
private void quick_Sort(int []A,int left,int right){
if(left<right){
//划区比较,这个partition 第一次!得到的就是我们刚才说的2。
int partition=partition(A, left, right);
//实现第一次划区的结果
show(A);
//进行下一次划区,
quick_Sort(A, left, partition-1);
quick_Sort(A, partition+1, right);
}
}
private int partition(int []A,int left,int right){
int x=A[right];
int i=left-1;
for (int j = left; j <= right-1; j++) {
if(A[j]<=x){
int exchange=A[++i];
A[i]=A[j];
A[j]=exchange;
}
}
int exchange=A[++i];
A[i]=A[right];
A[right]=exchange;
return i;
}
public void show(int A[]){
for(int a:A){
System.out.print(a+" ");
}
System.out.println();
}
public static void main(String[] args) {
int A[]={4,3,1,0,2};
Quick_Sort sort=new Quick_Sort();
sort.quick_Sort(A, 0, A.length-1);
}
}