快速排序

package A;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class JosePhu {
public static void main(String[] args) {
Method method=new Method();
//int[] a={5,9,4,2,1,10,7,8,3,6};
int[] a={-9,78,0,0,23,-567,70};
//left=0,是代表数组下标是从0开始的(即最左端),而不是a数组里的0元素
method.quickSort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
}
package A;

import java.util.Arrays;

public class Method {
/*L,R不能变,left和right相当于辅助变量,pivot是中值点,这一切的一切都需要在left小于right下进行,*/
public void quickSort(int[] a,int L,int R){
int left=L;
int right=R;
int temp=0;
int pivot=a[(left+right)/2];
while (left<right){
while (a[left]<pivot){
left++;
}
while (a[right]>pivot){
right--;
}
if (left==right){
break;
}
temp=a[left];
a[left]=a[right];
a[right]=temp;
if (a[left]==pivot){
right--;
}
if (a[right]==pivot){
left++;
}
}
if (left==right){
left++;
right--;
}
if (L<right){
quickSort(a,L,right);
}
if (R>left){
quickSort(a,left,R);
}

}
}

posted @ 2021-08-01 09:50  朱在春  阅读(45)  评论(0编辑  收藏  举报