ソートアルゴリズム - カウンティングソート(ジャワ)

com.rao.sortパッケージ; 

インポートjava.util.Arrays; 

/ * * 
 * @author Srao 
 * @className CountSort 
 * @date 2019年12月9日夜02時47分
 * @package com.rao.sort 
 * @descriptionカウントシング
 * / 
パブリック クラスcountSort { 

    / * * 
     *カウント配列
     * @param ARR:配列ソートする
     * @return 
     * / 
    パブリック 静的 INT [] countSort(INT [] ARR){
         int型 N- = arr.length;
         //は二つ定義変数は、最大値と最小配列格納するために使用される
        整数分= ARR [ 0 ]と、
         INT最大= ARR [0 ];
         のためのINT I = 1 ; I <N-; I ++ ){
             IF(MAX < ARR [I]){ 
                最大 = ARR [I]; 
            } 
            IF(ARR [I] < 分){  = ARR [Iは]; 
            } 
        } 
        // 長さlenのアレイを画定する、アレイ内の最小値を防ぐために行われる1000と最大値1010である
         // これはサイズ1010作成せずに、ライン10上のサイズの配列を作成配列、無駄なスペース
        int型のlen =最大-分+ 1。;
         // 1006が表示さプット一時、一度ならばデジタル、デジタルストレージに登場し、添字としてそれを置く[1006年から1000年]プラスワン
        のint [ 】一時=新しい新しい INT [LEN];
         のためのINT I = 0 ;私は<N- I ++ ){ 
            TEMP [ARR [I]は -分] ++ ; 
        } 
        int型 K = 0 ;
         // トラバースTEMPに、TEMP [I]の値は、回数iが加えTEMP [5] = 3、説明(5 + 1000)で3回現れ現れる
        ためINTを iは= 0 ; I <LEN; I ++ ){
             ためINT J = TEMPを[I]; J > 0 ; J、){ 
                ARR [K] = I + 分; 
                K ++ ; 
            } 
        }

        返すARR。
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){
         INT [] ARR = { 36950 }。
        システム。アウト.println(Arrays.toString(ARR)); 
        ARR = countSort(ARR)。
        システム。アウト.println(Arrays.toString(ARR)); 

    } 
}

  ソートカウントすることは、最大値と最小値の差が大きくないソートされていませんです。

  基本的な考え方は:配列の添字として配列要素であり、要素は、一時配列と統計、例えばTEMP [I] = Mで発生回数は、iが発生したm回の合計の要素を表します。そして最後に小から大への統計データの一時的な配列をまとめると、この時間は、それが注文されたデータをまとめたものです。

おすすめ

転載: www.cnblogs.com/rao11/p/12011095.html