码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2015-11-03 19:27:49      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

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;
    }
}

 

快速排序

标签:

原文地址:http://www.cnblogs.com/duanxingxing/p/4933831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!