快速排序是一个在经验上认为速度最快的排序法:具体代码结构如下,核心部分在于Partition函数;
import java.util.*;
public class QuickSort {
public void quicksort(int[] A, int l, int r){
if(l >= r) return;
int q = partition(A, l, r);
quicksort(A, l, q-1);
quicksort(A, q+1, r);
}
public int partition(int[] A, int l, int r){
int pivot = A[r];
int i = l - 1;
for(int j = l; j < r; j++){
if(A[j] <= pivot){
i++;
swap(A, i, j);
}
}
swap(A, i+1, r);
return i+1;
}
public void swap(int[] A, int i, int j){
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
public static void main(String[] args) {
int[] B = new int[]{0, 5, 6, 8, 2, 4, 8, 9, 14};
QuickSort obj = new QuickSort();
obj.quicksort(B, 0, B.length - 1);
System.out.println(Arrays.toString(B));
}
}
这里需要注意的是,QuickSort函数的两个Int值都是index并且是包含的,所以外部调用的时候需要有B.length-1的逻辑。Partition内部的逻辑需要稍加理解,都挺简单的。