public static int[] quit(int arr[],int left,int right){
int t;
if(left<right){
int s=arr[left];
int i=left;
int j=right+1;
while(true){
//从左left位置向右right位置找大于s的索引
while(i<arr.length&&arr[++i]<s);
//从右right位置向左left位置找小于s的索引
while(j>-1&&arr[--j]>s);
//如果i>=j就退出
if(i>=j){
break;
}else{
//如果找到一个比s大,找到一个比s小的值,就相互调换
t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
arr[left]=arr[j];
arr[j]=s;
//查找到比left小的值的索引处进行分割,对左边进行递归
quit(arr,left,j-1);
//查找到比left小的值的索引处进行分割,对右边进行递归
quit(arr,j+1,right);
}
return arr;
}
java快速排序法
最新推荐文章于 2021-10-05 18:28:48 发布