原理:交換価値への2つの隣接する要素、右の大きな要素を比較します。
考え順次隣り合うの数を比較し、番号が背面に多数の前方に配置されています。すなわち、最初のパス:まず、第1のコンパレータと、多数のリリース後の第二の数、前小数点、。最後の二つの数字は比較まで、多数のリリース前と後の第2の数と第3の数、小数点を比較するため、多数のリリース後、小数点の前に、続け。トリップステップを繰り返し、すべての並べ替えが完了するまで。
比較の最初のパスが完了した後、最後の桁は、比較した場合、最後の番号が比較に関与しない配列の数、従って第二のトリップの最大でなければなりません。
比較、最後から二番目の数の第二の通過が完了した後、配列の2番目の最大数ので、比較に参加していない最後の2つの数値を比較する第三の旅行でなければなりません。
そしてように、比較1の各パス数、
......
たとえば、次の配列をソートする:INT [] ARR = {6,3,8,2,9,1}。
最初の旅行の並び替え:
最初のソート:6と比較例3、図6は、切り替え位置3よりも大きい:368291
6未満8、無交換位置に比べ6,8:第二ソート368291
第三の分類:8と比較例2、図8に示すように、交換位置2よりも大きい:362891
第四の分類:8,9 9より8以下の比較、無切換位置:362891
第五の分類:9と比較例1:1よりも大きい9、位置切り替え:362819
結果をソート比べ5倍の最初のパスの合計:362819
-------------------------------------------------- -------------------
第二のトリップ並び替え:
最初の分類:3未満6と比較して3,6、位置を交換しません:362819
第二ソート:6と比較例2、2以上6、交換位置:326819
第三の分類:比較6,8、6、8より大きい、無交換位置:326819
第四の分類:8と比較例1、図8は、スイッチング位置1よりも大きい:326189
4つの第二のパスの比較の合計、ソート結果:326189
-------------------------------------------------- -------------------
第三のトリップ並び替え:
最初のソート:3と比較例2、図3に示すように、交換位置2よりも大きい:236189
第二ソート:3未満6と比較して3,6、位置を交換しません:236189
第三の分類:6と比較例1、図6は、スイッチング位置1よりも大きい:231689
ソートの結果と比較して、合計3回のための第二のパス:231689
-------------------------------------------------- -------------------
第四に、トリップ並び替え:
最初のソート:2及び3は、位置を変更しない2未満3と比較:231689
第二ソート:3と比較例1,3は、スイッチング位置1よりも大きい:213689
2つの第二のパスの比較の合計、ソート結果:213689
-------------------------------------------------- -------------------
第五旅の並び替え:
最初のソート:1と比較例2、位置切り替え、1より大きい:123689
1つの第二のパスの比較の合計、ソート結果:123689
-------------------------------------------------- -------------------
最終結果:123689
-------------------------------------------------- -------------------
したがって:Nソートする番号がソートN-1回の合計で、iは番号(Ni)の倍であるパスのすべての並べ替え、何回外部制御ループ、各内側層の制御、二重ループを使用することが可能である、完了回のサイクル数、つまり、
以下のために(INT I = 1; I <arr.length; iは++){ ための(int型、J = 1、J <arr.length-I; J ++){ //交换位置 }
利点のバブルソート:すべてのソートが大きな価値を見つけるための旅になりますので、ソートするすべての旅行、比較は、少なくなります。最後以外の数の数を比較する必要がある特定の数の最後の行に比べて最初のパスは、とりわけ、最大数、第二のパスのソートされたときの後、あなたも最大を見つけることができる:上記の実施例第三の旅を比較するときに戻って数倍の行数が第2の比較に参加するために、必要がある唯一のすべてを比較するために旅行を行っていなかった、言い換えれば、そうで......最後の二つの数字以外に加えて、数を比較し、比較的小さなへの旅は、ある程度、アルゴリズムの量を減らします。
/ * *バブルソート * / publicクラスバブルソート{ パブリック静的無効メイン(文字列[] args){ INT [] = {6,3,8,2,9,1} ARR; のSystem.out.println(「ソートアレイは前: "); (int型NUMため:{ARR) System.out.printの(NUM +"「); } ; I <-arr.length 1; Iは++){//外側のforループ(I = 0をint型パスのコントロール配列番号 用(int型J = 0; J <arr.length-1-I; J ++){// インナーループコントロール各旅行多くの種類の 場合(ARR [J]> ARR [J + 1]) { int型ARR TEMP = [J]; ARR [J]は= ARR [J + 1]; ARR [J + 1] = TEMP; } } } のSystem.out.println(); のSystem.out.println(「の後には、ソーティング配列は次のとおりです。「); (INT NUMため:ARR){ System.out.print(NUM +」「); } } }