首页 > 代码库 > 排序之 快速排序

排序之 快速排序

采用算法导论上的实现方式,用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));    }}

 

 

正确性证明: