1、将数组分成两个子数组,然后使用递归调用自身为每个子数组排序。 2、设置关键字,比关键字小的为一组,比关键字大的为一组。
· 设置最左边的为关键字
快速排序
public class QuickSort {
public static int QuickSort(int[] arr,int left,int right){
//选择最左边的数为关键字
int key=arr[left];
while(true){
//从右开始,找到比关键字小的数放到左边
while(left<right && arr[right]>=key)
right--;
arr[left]=arr[right];
//找到比关键字大的数移动到右边
while(left<right && arr[left]<=key)
left++;
arr[right]=arr[left];
}
//关键字到了最终位置
arr[left] = key;
//返回关键字的位置
return left;
}
public void sort(int[] arr,int left,int right){
if(left<right){
int result=QuickSort(arr, left, right);
sort(arr,left,result-1);
sort(arr,result+1,right);
}
}
}