アルゴリズムのアイデア:1桁、10桁で並べ替えます...順番に。各POSには、割り当てプロセスと収集プロセスがあります。配列[i] [0]は、i行のデータ数を記録します。
パッケージソート;/***カーディナリティソート*平均O(d(n+r))、best o(d(n+r))、最悪のo(d(n+r));スペースの複雑さo(n+r);安定した;より複雑な * dは数字の数、rは割り当て後のリンクリストの数 * @author zeng * */public class radixSort {// pos = 1は単一数字を表し、pos = 2は10桁を表します。 tmp)%10;} //最大桁dpublic static int getmaxweishu(int [] a){int max = a [0]; for(int i = 0; i <a.length; i ++){if(a [i]> max)max = a [i];} int tmp = 1、tmp *; != 0){d ++;} else break;} return d;} public static void radixSort(int [] a、int d){int [] [] array = new int [10] [a.length+1]; for(int i = 0; i <10; i ++){array [i] [0] = 0;// array [i] for [i] for [i] for for s for s for s for f for i for f for i for in for f for for f for in for for for for for for for for for in for for in for for p pos <= d; pos ++){for(int i = 0; i <a.length; i ++){// assignment process int row = getnuminpos(a [i]、pos); array [row] [col] = a [i];} array [row] [0]; {a ++] = array [col];} array [low] [0] = 0; // reset、次のpos}}} public static main(string [] args){int [] a = {49、38、65、76、76、27、27、27、27、27、27、27、27、27、27、27、27、27、27、27、27、27、 getmaxweishu(a)); for(int i:a)system.out.print(i + "");}}}実行中の結果に注意してください:
要約します
上記は、Java言語実装のためのカーディナリティソートコードの実装に関するこの記事のすべての内容です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このウェブサイトで他のJava関連のトピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!