バブルソート
隣合う数字の大小を比較しながら整列させるソートのことです。
実装する中身が
n × n
となるためにO(n^2)となるので、整列のアルゴリズムとしては遅いようです。
なので、要素が短いという条件意外では使えそうもないです。
では、例を見ていきます。
初期データ5個の整数を持つとします。
80 20 17 41 4
これをバブルソートを利用して、昇順にソートしていく過程を見ていきます。
赤色がソート対象となる値で、青がソート完成した値です。
80 20 17 41 4
20 80 17 41 4
20 17 80 41 4
20 17 41 80 4
20 17 41 4 80
20 17 41 4 80
一回目のforループが終わって末端に最大値が来ました。
次はまた、最初の数値から見て、末端を除いて値を交換していきます。
20 17 41 4 80
17 20 41 4 80
17 20 41 4 80
17 20 4 41 80
17 20 4 41 80
5列目と4列目が固定されました。
後は同じように整列を続けます。
では、これをc言語のコードにしてみます。
/* x[] = sortしたい配列 n = 配列要素の最大数 */ void BubbleSort(int x[ ], int n) { int temp; for (int i = 0; i < n; ++i) { for (int j = 1; j < n - i; j++) { if (x[j - 1] > x[j]) { temp = x[j - 1]; x[j - 1] = x[j]; x[j]= temp; } } } }
以上で終わります。
0 件のコメント:
コメントを投稿