#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