標籤:style blog http color java os io strong
採用演算法導論上的實現方式,用java實現。
快排演算法核心的部分便是partition過程,這裡的partition採取最後一個元素作為pivot,i和j兩個指標都從頭向後掃描,如所示,數組被分為4個部分。
演算法執行的過程:
代碼實現:
import java.util.Arrays;public class MySort { public static void quickSort(int[] a) { qSort(a, 0, a.length - 1); } private static void qSort(int[] a, int p, int r) { if (p < r) { int q = partition(a, p, r); qSort(a, p, q - 1); qSort(a, q + 1, r); } } private static int partition(int[] a, int p, int r) { int x = a[r]; int i = p - 1; int j = p; for (j = p; j < r; j++) { if (a[j] <= x) { i++; swap(a, i, j); } } swap(a, i + 1, r); return i + 1; } private static void swap(int[] a, int i, int j) { if (i != j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } public static void main(String[] args) { int[] a = { 2, 8, 7, 1, 3, 5, 6, 4 }; System.out.println(Arrays.toString(a)); quickSort(a); System.out.println(Arrays.toString(a)); }}
正確性證明: