首先,选取一个数据(通常选用第一个元素)作为基准点,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序,然后采用分治策略,分别以同样的方式排序前面和后面的数据。代码如下:
public void quickSort(int a[],int start,int end){
int key=a[start];
int left=start;
int right=end;
while(left<right){
while(left<right && a[right]>=key){
right--;
}
a[left]=a[right];
while(left<right && a[left]<=key){
left++;
}
a[right]=a[left];
}
a[left]=key;
if(left>start){
quickSort(a, start, left-1);
}
if(left<end){
quickSort(a, left+1, end);
}
}