package MySort;
public class FastSort {
public static void main(String[] args){
int[] array={10,20,50,30,84,48,25,52};
FastSort fs=new FastSort();
fs.fastSort(array,0,array.length-1);
for(int i=0;i<=array.length-1;i++){
System.out.println(array[i]);
}
}
public int position(int[] sortNumber,int low,int high){
int position=sortNumber[low];
//从区间两端向中间扫描,直到low=high为止
while(low<high){
//外层循环管不到这里,所以还要判断low和high
//从右向左扫描,直到找到第一个小于基准的元素
while(low<high&&position<=sortNumber[high])
high--;
if(low<high)//否则当计算到i=j时,也会执行赋值
sortNumber[low++]=sortNumber[high];
while(low<high&&sortNumber[low]<=position)
low++;
if(low<high)
sortNumber[high--]=sortNumber[low];
}
//把基准元素放到合适的位置
sortNumber[low]=position;
//把基准元素的位置返回
return low;
}
public void fastSort(int[] array,int low,int high){
if(low<high){
int pos=position(array,low,high);
fastSort(array,low,pos-1);
fastSort(array,pos+1,high);
}
}
}