快速排序

1.给定如下几个数 11, 5, 80, 20, 10, 9, 30,使用快速排序排序,

   快速排序的原理如下:

   通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码:

/**
 * Created by xingxing.duan on 2015/11/3.
 */
public class QuickSort {

    public static void main(String[] args) {
        int[] matrix = new int[]{11, 5, 80, 20, 10, 9, 30};
        quickSort(matrix, 0, matrix.length - 1);
        for (int i : matrix) {
            System.out.print(i + " ");
        }
    }

    private static void quickSort(int[] matrix, int i, int j) {

        int k = partition(matrix, i, j);
        if (i < k - 1) quickSort(matrix, i, k - 1);
        if (j > k + 1) quickSort(matrix, k + 1, j);
    }

    private static int partition(int[] matrix, int i, int j) {
        int rand = matrix[i];
        while (i < j) {
            while (i < j && rand <= matrix[j]) j--;
            matrix[i] = matrix[j];
            while (i < j && rand >= matrix[i]) i++;
            matrix[j] = matrix[i];
        }
        matrix[i] = rand;
        return i;
    }
}
原文地址:https://www.cnblogs.com/duanxingxing/p/4933831.html