快速排序法

public class quickSort{
public static void main(String[] args){
int[] intArray={12,11,45,6,8,43,40,57,3,5,9,10,18,16,1};
System.out.println("before sort:");
for(int i=0;i<intArray.length;i++){
System.out.print(" "+intArray[i]);
if((i+1)%5==0)
System.out.println();
}
System.out.println();
int[] b=quickSort(intArray,0,intArray.length-1);
System.out.println("quickly sorted:");
for(int i=0;i<b.length;i++){
System.out.print(" "+b[i]);
if((i+1)%5==0)
System.out.println();
}
}
public static int getMiddle(int[] array,int left,int right){
int temp;
//进行快排,并返回中心点位置
int mid=array[left];
while(left<right){
while(left<right&&array[right]>=mid)
right--;
temp=array[right];
array[right]=array[left];
array[left]=temp;
while (left<right&&array[left]<=mid)
left++;
temp=array[right];
array[right]=array[left];
array[left]=temp;
}
array[left]=mid;//中心移到正确的位置
return left;
}
public static int[] quickSort(int[] array,int left,int right){
if(left<right-1){//开始点和结束点没有重合到一起,指针没有执行到末尾
int mid=getMiddle(array,left,right);//重新获取中间点
quickSort(array,left,mid-1);
quickSort(array,mid+1,right);
}
return array;
}
}

posted @ 2015-05-23 23:38  sunshinewxz  阅读(103)  评论(0编辑  收藏  举报