ジャワのカスタム並べ替え:
1.ソートラッパークラスのオブジェクトは、基本データ型であってはなりません。
右の範囲内で、左2.コールは、Arrays.sort(配列、左、右、CMP)ソートする、配列への配列、CMPは、ユーザーが定義する比較関数です。
3. CMP定義されたオブジェクトは、コンパレータ<>クラスのメソッドの比較を書き換える必要があります。
輸入java.utilの。*; パブリッククラスメイン { 静的整数[] A = NULL; 公共の静的な無効メイン(文字列引数[]) { =新しいスキャナ(System.in)スキャナ。 コンパレータ<整数> CMP =新しいコンパレータ<整数>(){ 公共のint比較(整数、整数B){ 戻りB - ; //降序 } }。 INT、N = in.nextInt()。 =新しい整数[N]。 以下のために(INT i = 0; iがn <; iは++)A [I] = in.nextInt()。 Arrays.sort(A、0、N、CMP)。 (整数I:A)のためのSystem.out.println(I); }
カスタムの並べ替えcを確認する++
最初:カスタムクラス
比較関数は、一種のように宣言比較するために、静的メンバ関数またはグローバル関数それ以外の場合はエラーになります、ではない普通のメンバ関数として、。非静的メンバ関数の無効な使用
として:非静的メンバ関数は、特定のオブジェクト、とstdに依存している::ソートこれらの関数はグローバルであり、したがって、もはや一種の非静的メンバ関数を呼び出すことはできません。
静的メンバ関数またはグローバル関数は、特定のオブジェクトに依存しない、あなたがアクセスできる任意のオブジェクトのインスタンスを作成することなく、独立してアクセスすることができます。一方、静的メンバ関数は非静的メンバクラスを呼び出すことはできません。
書式#include <iostreamの> の#include "アルゴリズム" の#include "cmath" 名前空間stdを使用。 クラス契約{ パブリック: 静的ブールCMP(int型L、INT R){ 戻りL> R; //降序 } ボイド試験(INT * ARR、int型のサイズ){ (+サイズ、CMP ARR ARR)ソート。 (I 0 = int型、私はサイズを<; ++ i)について COUT << ARR [I] <<」「。 coutの<< '\ nの'; } }。 メインINT() { 扱います。 [8] = {1,9,2,3,7,0,6,4} ARR INT。 a.test(ARR、8)。 0を返します。 }
2番目のカスタム比較関数:
書式#include <iostreamの> の#include "アルゴリズム" の#include "cmath" 名前空間stdを使用。 ブールCMP(int型のL、R INT){ 戻りL> R。 } int型のmain() { int型ARR [8] = {1,9,2,3,7,0,6,4}。 ソート(ARR、ARR + 8、CMP)。 以下のために(INT i = 0; iは8 <; I ++) COUTを<< ARR [I] <<」「。 coutの<<てendl; 0を返します。 }