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

1. 2つの隣接する要素を比較し、値が大きい要素を右に交換します。

2. 2つの隣接する数値を順番に比較し、10進数を前に、大きな数を後ろに配置します。つまり、最初のトリップでは、最初の数値と2番目の数値を比較し、大きな数値の前に小数を置きます。次に、2番目と3番目の数値を比較し、大きい数の前に小数を置きます。最後の2つの数値を比較するまで、大きい数の前に小数を置きます。すべての並べ替えが完了するまで、最初の手順を繰り返します。

3.最初の比較が完了した後、最後の数は配列内の最大数でなければならないため、2番目の比較中に最後の数は比較に参加しません。

2番目の比較が完了した後、最後から2番目の数値も配列の2番目に大きい数値でなければならないため、最後の2つの数値は3番目の比較中に比較に含まれません。

など

4.例:配列をソートするには:int [] arr = {6,3,8,2,9,1};   

最初の並べ替え:

    最初のソート:6と3が比較され、6が3より大きい。交換位置:3 6 8 2 9 1

    2番目のソート:6と8が比較され、6が8未満で、ポジションを交換しない:3 6 8 2 9 1

    3番目の種類:8と2が比較され、8が2より大きい。交換位置:3 6 2 8 9 1

    4番目のソート:8と9が比較され、8が9未満で、ポジションを交換しない:3 6 2 8 9 1

    5番目のソート:9と1の比較:9は1より大きい、交換位置:3 6 2 8 1 9

    最初の旅行で合計5つの比較が行われ、結果がソートされました。3 6 2 8 1 9

-------------------------------------------------- -------------------

2番目のパスでの並べ替え:

    初回のソート:3と6が比較され、3は6未満であり、スワップ位置はありません:3 6 2 8 1 9

    2番目のソート:6と2が比較され、6が2より大きい。交換位置:3 2 6 8 1 9

    3番目の種類:6と8が比較され、6が8より大きい、ポジションを交換しない:3 2 6 8 1 9

    4番目のソート:8と1が比較され、8が1より大きい場合、交換位置:3 2 6 1 8 9

    2回目のトリップでは、合計4つの比較が行われました。並べ替えの結果:3 2 6 1 8 9

-------------------------------------------------- -------------------

3番目のパスでの並べ替え:

    最初のソート:3と2が比較され、3が2より大きい。交換位置:2 3 6 1 8 9

    2番目のソート:3と6が比較され、3が6未満である場合、位置を交換しない:2 3 6 1 8 9

    3番目の種類:6と1が比較され、6が1より大きい場合、交換位置:2 3 1 6 8 9

    2回目のトリップでは、合計3つの比較が行われました。並べ替えの結果:2 3 1 6 8 9

-------------------------------------------------- -------------------

4番目のソート:

    初回のソート:2と3が比較され、2が3より小さい、位置を交換しない:2 3 1 6 8 9

    2番目のソート:3と1が比較され、3が1より大きい場合、交換位置:2 1 3 6 8 9

    2回目の旅行で合計2つの比較が行われ、結果がソートされました。2 1 3 6 8 9

-------------------------------------------------- -------------------

5番目のパスでの並べ替え:

    最初のソート:2と1が比較され、2が1より大きい場合、交換位置:1 2 3 6 8 9

    2回目の旅行で合計1つの比較が行われ、結果がソートされました。1 2 3 6 8 9

-------------------------------------------------- -------------------

最終結果:1 2 3 6 8 9

-------------------------------------------------- -------------------

5.コード

    int[] arr = { 2, 8, 9, 6, 3, 1 };
    int temp = -1;
for (int i = 0; i < arr.length; i++) {
	for (int j = i + 1; j < arr.length; j++) {
		if (arr[i] > arr[j]) {
			temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
		}
	    }
        }
System.out.println(Arrays.toString(arr));

 

公開された12元の記事 ウォンの賞賛9 ビュー10000 +

おすすめ

転載: blog.csdn.net/finaly_yu/article/details/87626893