zoukankan      html  css  js  c++  java
  • 快速排序

    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;
        }
    }
  • 相关阅读:
    C++常用库函数
    ejabberd组成模块
    TCP/IP协议栈的基本工作原理
    erlang ets表
    erlang lists模块函数使用大全
    erlang-string
    erlang四大behaviour之四-supervisor
    erlang四大behaviour之三-gen_event
    erlang四大behaviour之二-gen_fsm
    erlang四大behaviour之一gen_server
  • 原文地址:https://www.cnblogs.com/duanxingxing/p/4933831.html
Copyright © 2011-2022 走看看