import java.util.Arrays;
public class TestQuickSort {
public static int partion(int []array,int low,int hign){
int tmp=array[low];
while(low<hign){
while(low<hign&&array[hign]>=tmp){
--hign;
}
if(low>=hign){
break;
}else{
array[low]=array[hign];
}
while(low<hign&&array[low]<=tmp){
++low;
}
if(low>=hign){
break;
}else{
array[hign]=array[low];
}
}
array[low]=tmp;
return low;
}
//快速排序的非遞歸用棧來做
public static void QuickSort(int[]array){
int[]stack=new int[array.length];
int top=0;
int low=0;
int hign=array.length-1;
int par=partion(array,low,hign);
//入棧
if(par>low+1){
stack[top++]=low;
stack[top++]=par-1;
}
if(par<hign-1){
stack[top++]=par+1;
stack[top++]=hign;
}
//出棧
while(top>0){
hign=stack[--top];
low=stack[--top];
par=partion(array,low,hign);
if(par>low+1){
stack[top++]=low;
stack[top++]=par-1;
}
if(par<hign-1){
stack[top++]=par+1;
stack[top++]=hign;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[]array={20,3,5,0,32,22,11,8,7,9};
QuickSort(array);
System.out.println(Arrays.toString(array));
}
}