public void quickSort(int[] arr){
quickSort(arr,0,arr.length-1);
}
private void quickSort(int[] arr,int left,int right){
if(left>=right){
return;
}
int target =arr [left];
int i = left;
int j = right;
while(i<j){
//以左侧为基准开始排序,则必须右侧先开始移动指针,这样最后到达的位置是小于基准值的 方便基准值归位中间
//右侧arr[j]>target,左侧arr[i]<=target,这样保证在基准值的左侧是小于等于,右侧是大于
while(i<j && arr[j]>target){
j--;
}
while(i<j && arr[i]<=target){
i++;
}
if(i<j){
int tmp = arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
}
// 此时 指针i所指向的值一定是小于或等于 target的,交换target 和 arr[i],保证左侧均为小于或等于target
arr[left]=arr[i];
arr[i]=target;
quickSort(arr,left,i-1);
quickSort(arr,i+1,right);
}
快速排序 Java
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...