6
1

More than 3 years have passed since last update.

Javaで昇順の並べ替え(バブルソート:単純交換法のアルゴリズム)

Posted at

Javaで昇順の並べ替え(バブルソート:単純交換法のアルゴリズム)

Javaの基礎を学ぶ中でアルゴリズムに関する問題にあたったので、思考整理のため記載しました。

昇順に並べ変える(例:2,5,3,4,1→1,2,3,4,5)
ちなみに降順(5,4,3,2,1)

イメージは左から1つずつ順番にfor文で比較し、並べ替える。
(比較例:2と5、2と3、2と4、2と1…。)

書き方はいろいろありますが、下記コード例

1 int[] date = {2,5,3,4,1};
2 for (int i = 0; i < date.length - 1; i++) {
3   for (int j = i + 1; j < date.length ; j++) {
4       if (date[i] > date[j]) {
5           int a = date[i];
6           date[i] = date[j];
7           date[j] = a;
8       }
9   }
10}
11for (int i = 0; i < date.length; i++) {
12  System.out.print(date[i] + " ");
13}

2行目のfor文で比較元となる1つ目の要素を取得するために条件式を指定します。

初期値i = 0;条件式(i < date.length - 1);次の一歩 i++

一つの要素が比較する値の数をdate.length - 1で取得します。
並べ替える数が増えても問題ありません。

比較する値の数とは、例:2,5,3,4,1のうち
2と5,2と3,2と4,2と1の4回

3行目のfor文で比較対象となる2つ目の要素を取得するため初期値j = i +iの形で条件式を記述します。

初期値(j = i +i);条件式(j < date.length);次の一歩 j++

4〜8行目のif文で条件に当てはまる値の比較を行い、並び替えを行います。

if (date[i] > date[j]) {
    int a = date[i];
    date[i] = date[j];
    date[j] = a;
}

並べ変え後のdateの表示

for (int i = 0; i < date.length; i++) {
    System.out.print(date[i] + " ");
}
コンソール表示
1 2 3 4 5

参照


【Java】配列を使って並び替えをする(バブルソート編)

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1