ThreeTypesOfBaseSortクラス{公共
// ==========================の効率の比較===========三つの基本的なソート=================
パブリック静的無効メイン(文字列[] args){
ThreeTypesOfBaseSort新しい新しいThreeTypesOfBaseSortソート=();
百万レベルを選別//テストアレイ、基本的な3を参照してくださいソートの効率差:
INT番号= 500000;
INT []配列=新しい新しいINT [数];
INT []配列1 =新たな新しいINT [番号];
[]配列2 =新しい新しいINT [番号] int型
のための(INT I = 0 ; I <Array.lengthとすること; Iは++){
int型新しい新しいTEMP =ランダム()nextInt(番号);.
配列[I] = TEMP;
配列1 [I] = TEMP;
配列2 [I] = TEMP;
}
のSystem.out.println ( "アレイ準備〜");
ロングSTART1 =にSystem.currentTimeMillis();
sort.bubbleSort(アレイ);
ロングEND1 =にSystem.currentTimeMillis();
のSystem.out.println( "バブルソートを使用する:" +(END1 - START1) ); // 5 万人以上が:4302551000:41575000: 1644079
ロングSTART2 =にSystem.currentTimeMillis();
sort.selectionSort(配列1);
ロングEND2 =にSystem.currentTimeMillis();
System.out.printlnは( "とselectSort:" +(END2 - START2) ); // 5 百万: 7275000:742 531 000 281 276 ==「5.7倍高速バブルよりもソートを選択します。
START3 =にSystem.currentTimeMillisロング();
sort.insertionSort(配列2);
ロングEND3 =にSystem.currentTimeMillis();
System.out.printlnは( "挿入ソートを使用:" +(END3 - START3を) ); // 5 百万:827 0.50百万:84644。==「ソート選択よりも少し遅く挿入します。
}
// ==========================バブルソート===================== =======
/ **
*バブルソート:隣接する二つの数字を比較する、それが大きな順に小さい場合は、より大きな数、毎回交換を置きます。
最適化のアイデアの*バブルソート:
*①空の宣告;
*②の要素の数は非常に特別であるとき:0,1数があるとき;
*③配列が注文した、またはすべての要素が同じである配列されています
* /
公共のボイドバブルソート(INT []ターゲット){
IF(ターゲット== NULL){
リターン;
}
trueにブール=タグ;配列を注文された//場合は、交換する必要はありません。
以下のために(; I I = 0 int型 <target.length -1 &&タグ; iは++){// アウターループ:要素-1)倍の対照群と比較:(番号の数。
= FALSEタグに;
のため(INT J = 0; J <target.length - I - 1、J ++){//内部ループ:それぞれの比較の数を制御:比較比較は、各グループの最初の要素から始まります背面に移動するとき、比較= target.length-1-Iの数の各々をそれぞれ最大の比較。
IF(ターゲット[J]>ターゲット [J + 1]){
ターゲットTEMP = INT [J];
ターゲット[J] =目標[J + 1];
ターゲット[J + 1] = TEMP;
タグ= trueに;
}
}
}
}
// ===========選択ソート============================ ============
/ **
*ソートを選択します。
*最初のn個の要素から選択されたトリップデータシーケンスは、最も前方の位置に分/要素をキーワードと、
* n-1個の要素から選択されたトリップ・分/要素とにソートされていません要素の一番の位置。だから、N-1回の後に注文を完了します。
* /
公共ボイド選択ソート(INT []目標){
IF(ターゲット== NULL){
リターン;
}
ため(INT I = 0; I <target.length - 1; Iは++){
int型tempIndex = I;
のための(INT J = I + 1、J <target.length ; J ++){
IF(ターゲット[tempIndex]>ターゲット[J]){
tempIndex = J;
}
}
int型のTEMP = [tempIndex]ターゲット、
ターゲット[tempIndex]ターゲット= [I]は、
ターゲット[I] = TEMPを;
}
}
// == =================== insertSort ============================== ======
/ **
*挿入ソート:ソートされた配列決定されたデータにデータを挿入する(通常、デフォルトは第2の比較素子から順に第一の要素である)、
*よう新しい、プラス順データの数を取得するために、アルゴリズムをソートすることは、少量のデータに適しています。
* /
公共ボイド挿入ソート(INT []目標){
IF(ターゲット== NULL){
リターン;
}
//外側のループを比較の数を設定し;
(I = 0をint型のために、私はtarget.lengthを< - 1; I ++ ){
// 2つのサイクル:外側の比較対照グループの数、グループを識別するための内部責任、ソートされた配列された後、これにランダムな要素を比較することにより、無秩序の最初の要素規則的な配列。
以下のために(INT I = J + 1、J> 0; J - ){
IF(ターゲット[J - 1]>ターゲット[J]){
int型の標的TEMP = [J];
ターゲット[J] =目標[J - 1];
ターゲット[J - 1] = TEMP;
}他{
BREAK;
}
}
}
}
}
バブルソート、挿入ソートと選択ソート:三つの基本的なソートと効率の比較を達成
おすすめ
転載: www.cnblogs.com/laipimei/p/11118561.html
おすすめ
ランキング