collections.sort()
Javaのソートは、colletileos.sort()で実装できます。
リストをコレクションで並べ替える方法は2つあります。
1つ目は、次のように、同等のインターフェイスを実装するリストのオブジェクトです。
/***注文に応じてユーザーを並べ替えます<ユーザー> {private string getname()e;} public void name(this.name = name;} public Integer getrder(){return order;} public void setorder(integer order){this.order = order;} public int compareto(user arg0){rn this.getorder()。 );}}テスト:
public class test {string [] arts user1.setname( "a"); ); setord <ユーザー> (list);出力の結果は次のとおりです
ab
2番目の方法は、収集の読み込み方法に基づいて達成することです。
/***注文に応じてユーザーを並べ替えます*/public classユーザー{//比較可能なインターフェイスを実装する必要はありません。 return order;} public void setorder(integer order){this.order = order;}}}}メインクラスに書く::
public class test {string [] arts user1.setname( "a"); ; user2 int Compare(user arg1){return arg0.getordo();}}); getname());}}}出力の結果は次のとおりです
ab
前者のコード構造は単純ですが、固定属性に従ってのみソートできます。
最高のものを選択してください。
一般的なソートアルゴリズム
いくつかの古典的なソートアルゴリズムを使用したJavaコードの練習を見てみましょう。
バブルソート
public static void bubblesort(int a []、int n){int i、j; j ++){if(a [j]> a [j + 1]){j] = a [j + 1] = a [j] ^ a [j + 1]; a [j] ^ a [j + 1];}}}ソートを直接挿入します
public static void insertsort(int a []、int i、j、tmp; ; j> = 0; ;}}}
直接選択してください
public static void selectsort(int a []、int i、j、local; n; j ++){a [j] <a [loc]){loc!= i){a [i] ^ a [loc]; [loc] = a [i] ^ a [loc]; a [i] ^ a [loc];}}}ソート
/ ** * Heap Sort(小から大部分) n); int j = n-1; j-){a [0]; 0、j);}} / ** *多くのルーツを構築 * * * * * * * * * * * @param n * / private static void buildmaxheap(int a []、int n){for(int i =( n -2) / 2; i> = 0; i * @param n * / private void maxheapify(int a、int n){int left、right、local; i + 2; if; ;} if(loc!= i){a [i] ^ a [i] = a [i] = a [loc] ^ a [i];} else {break;}}}高速ソート
public static void Quicksort(int a []、int bt、int ed){bt <ed){int pivotputition(a、bt、ed); 1、ed);}} private static void swapvar(int a []、int bt、int ed){int mid = bt +(ed -bt) / 2; )bt] = a [mid] = a [bt] = a [bt] ^ a [Mid]、 bt、int ed){//整然とした外観の配列を防ぐために中間値を取得しますed){while(bt <ed && a [ed]> = stand){ed-;} if(bt <ed){bt ++] = a [ed] <= stand){ bt ++;} if(bt <ed){a [eds ---] = a [bt];} [bt] = state;}マージ
public static void mergesort(int a []、int bt、int ed){bt <ed){int mid +(ed -bt) / 2; ed); mergearray(a、bt、mid、ed);}} private static void mergearray(int a []、int bt、int mid、int ed) ; int tmp [] = new int [len]; = a [j]){tmp [k] = a [i ++];} else {tmp [k] = a [j ++];} while(j <= ed){tmp [k ++ ] = a [j ++];} for(i = 0; i <k; i ++){a [bt+i] = tmp [i];}}テストプログラム
上記のアルゴリズムを要約してください。
Java.util.scannerをインポートしますcin.nextint(); ; // selectsort(a、n); ** * MERGE SORT * * * @PARAM A * @PARAM BT * @PARAM EDS * / public Static Void Memort(int a []、int bt、int ed){if <ed){int mid = bt +(ed(ed(ed(ed) -bt) / 2; Param bt * @param mid * @param ed */ private static void mergearray(int a []、int bt、int mid、int ed){int i、j、k、k、len = ed -bt + 1; tmp [] = new int [len]; <= a [j]){tmp [k] = a [i ++];} else {tmp [k] = a [j ++];}} while(i <= mid){tmp [k ++ ] = a [i ++];} while(j <= ed){tmp [k ++] = a [j ++];} for(i = 0; i <k; i ++){a [a [a [ bt+i] = tmp [i];} / ** *迅速なソート * * * @param a * @param bt * @param ed * / public static void Quicksort(int a []、int bt、int ed){ if(bt <ed){int pivot)= pivotpartition(a、bt、ed); a []、int bt、int ed){int mid = bt +(ed -bt) / 2; ] = a [bt] [mid]; a [bt] ^ a [mid];} / ** *ベンチマークポイント位置 * * @param a * @param bt * @パラマー * @return */ private static int pivotpartition(int a []、int bt、int ed){//整然と外観の配列を防ぐために中間値をスタンドとして取得しますo(n^2)swapvar(a、 bt、ed); int stand [bt]; +] = a [ed];} while(bt <ed && a [bt] <= stand){bt ++;} if(bt <ed){a [eds ---] = a [bt];} a [bt] = stand bt;} / ****** heap sort(small〜olg) ){int tmp; [j]; a [j] = tmp; []、int n){for(int i =(n -2) / 2; i> = 0; i-){maxheapify(a、i、n);} / ** *メンテナンスメンテナンス開始の最大パイルのメンテナンス入札からi * * * * @param a * @param n * / private static void maxheapify(int a []、int i、int n){int left、right、local; 2 * i + 1;右 * i + 2; ){i = right;} if(loc!= i){a] = a [loc] = a [loc] ^ a [i]; i] = a [loc] ^ a [i];} else {break;}}}}} / ** * select arting arirect * * * * * @param n * / public static void selectsort(int a [a [a) ]、int n){int i、j、for(i <n; i ++){loc = i; (a [j] <a [loc]){loc = j;}} if(loc!= i){a)= a [i] ^ a [loc] = a [i] ^ a [loc]; a [i] ^ a [loc];}} / ** * * * * * @param n * / public static void insertsort (int a []、int n){int i、j、tmp; 0; j-){a [j]> tmp){a [j + 1] = a [j];} else {break;}} a [j + 1] = tmp;} / ** * sort * * * @param a * @param n * / public static void bubblesort(int a []、int n){int i、j; (j = 0; j <n -i -1; j ++){if(a [j]> a [j +1]){a [a j] = a [j] ^ a [j + 1]。 * @param a * / public static void printarr(int a []){for(int i = 0; i <.length; i ++){if(i == a.length -1){system.out。 printf( "%d/n"、a [i]);} else {system.out.printf( "%d"、a [i]);}}}}}}}}