public static void quickSort(int[] arr,int L,int R){
if(L>=R) return;
int left = L;
int right = R;
int pivot = arr[left];以数组第一位元素为标记
while(left<right){
//左右指针轮流交换
while (left<right&&arr[right]>=pivot){
right--;//如果右指针大于标记
}
if(left<right){
arr[left]=arr[right];//交换
}
while (left<right&&arr[left]<=pivot){
left++;//如果左指针小于标记
}
if(left<right){
arr[right]= arr[left];//交换
}
if(left>=right){
arr[left]=pivot;
}
}
//调用递归继续排序
//从第一位元素到两索引交界前一位
quickSort(arr,L,right-1);
//从两索引交界后一位到最后一位元素
quickSort(arr,right+1,R);
}
快速排序quickSort
于 2022-11-19 21:27:12 首次发布