快速排序
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; } }