Javaのバブルソートアルゴリズム

原理:交換価値への2つの隣接する要素、右の大きな要素を比較します。
考え順次隣り合うの数を比較し、番号が背面に多数の前方に配置されています。すなわち、最初のパス:まず、第1の比較器と第二の数、小数点以下の場所の前に、多数のリリース後。最後の二つの数字は比較まで、多数のリリース前と後の第2の数と第3の数、小数の場所を比較するので、多数のリリース後、小数点の前に、続け。すべての並べ替えが完了するまで繰り返し手順をトリップ。

第二のトリップは、最後の番号を比較する場合、比較に関与しないので、比較の最初のパスが完了した後、最後の桁は、アレイの数の最大でなければなりません。

第三のトリップは、比較に参加していない最後の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

第四のソート:362891:8及び9は、8未満9よりも切換位置を比較していません

第五の分類:9と比較例1:9 1より大きい、スイッチング位置: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


第四に、トリップ並び替え:

最初のソート:231689:2未満3ない変化位置と比較2及び3

第二ソート:3と比較例1,3は、スイッチング位置1よりも大きい:213689

2つの第二のパスの比較の合計、ソート結果:213689


第五旅の並び替え:

最初のソート:1と比較例2、位置切り替え、1より大きい:123689

1つの第二のパスの比較の合計、ソート結果:123689


最終結果:123689


したがって:ソートにN個が完了し、ソートN-1回の合計で、iは番号(Ni)の倍であるパスのすべての並べ替え、何回外部制御ループ、各内側層の制御、二重ループを使用することが可能です倍であるサイクル数、

/*
 * 冒泡排序
 */
public class BubbleSort {
  public static void main(String[] args) {
    int[] arr={6,3,8,2,9,1};
    System.out.println("排序前数组为:");
    for(int num:arr){
      System.out.print(num+" ");
    }
    for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数
      for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次
        if(arr[j]>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    } 
    System.out.println();
    System.out.println("排序后的数组为:");
     for(int num:arr){
       System.out.print(num+" ");
     } 
  }
 }
公開された32元の記事 ウォン称賛21 ビュー8472

おすすめ

転載: blog.csdn.net/weixin_39638459/article/details/88626884