1.快速排序–取最左为基准
import java.util.Arrays;
public class QuickSort {
public static void quickSort(int[] ints,int left,int right){
int partition;
if (left<right){
partition = partition(ints,left, right);
quickSort(ints,left,partition-1);
quickSort(ints,partition+1,right);
}
}
public static int partition(int[] ints,int left,int right){
int pivot = ints[left];
while (left<right){
while (left<right&&ints[right]>=pivot){
right--;
}
ints[left] = ints[right];
while (left<right&&ints[left]<=pivot){
left++;
}
ints[right] = ints[left];
if (right == left){
ints[left] = pivot;
}
}
return left;
}
public static void main(String[] args) {
int[] ints = new int[]{2,3,5,4,1};
quickSort(ints,0,ints.length-1);
System.out.println(Arrays.toString(ints));
}
}
2.快速排序–取最右为基准
public static void quickSortCenter(int[] ints,int left,int right){
if (left<right){
int center = (right+left)/2;
int pivot = ints[center];
int i = left-1;
int j = right+1;
while (true){
while (ints[++i]<pivot);
while (ints[--j]>pivot);
if (i>=j){
break;
}
swap(ints,i,j);
}
quickSortCenter(ints,left,i-1);
quickSortCenter(ints,j+1,right);
}
}
public static void swap(int[] ints,int i,int j){
int temp;
temp = ints[j];
ints[j] = ints[i];
ints[i] = temp;
}
public static void main(String[] args) {
int[] ints = new int[]{2,3,5,4,1,8,7};
System.out.println("取中间为基准");
quickSortCenter(ints,0,ints.length-1);
System.out.println(Arrays.toString(ints));
}