快速排序是一個(gè)在經(jīng)驗(yàn)上認(rèn)為速度最快的排序法:具體代碼結(jié)構(gòu)如下好芭,核心部分在于Partition函數(shù)楚堤;
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函數(shù)的兩個(gè)Int值都是index并且是包含的逊拍,所以外部調(diào)用的時(shí)候需要有B.length-1的邏輯交胚。Partition內(nèi)部的邏輯需要稍加理解,都挺簡(jiǎn)單的绊起。