アルゴリズム

バブルソート

更新日:

バブルソートとは

ソート(並べ替え)のアルゴリズムにはいくつかの種類がありますが、ここでは最も単純なバブルソートを紹介します。

以下のような配列a[]を昇順に並べ替えたいと思います。

添え字 [0] [1] [2] [3] [4]
5 3 9 1 8

配列の終端までa[j]とa[j + 1]を比較し、添え字が小さいほうの値が大きければ値を入れ替えます。
まず最初にa[0]とa[1]を比較し、a[0] = 5、a[1] = 3よりa[0] > a[1]なので値を入れ替えます。

添え字 [0] [1] [2] [3] [4]
3 5 9 1 8

次にa[1]とa[2]を比較し、a[1] = 5、a[2] = 9よりa[1] < a[2]なので値を入れ替えません。

添え字 [0] [1] [2] [3] [4]
3 5 9 1 8

次にa[2]とa[3]を比較し、a[2] = 9、a[3] = 1よりa[2] > a[3]なので値を入れ替えます。

添え字 [0] [1] [2] [3] [4]
3 5 1 9 8

これを最後までやると最も大きい数が配列の一番最後に来ます。

添え字 [0] [1] [2] [3] [4]
3 5 1 8 9

この作業を要素数だけ繰り返すと、次は2番目に大きい数が最後から2番目に、3番目に大きい数が最後から3番目に…と続いて、並べ替えることができます。

ソースコード

これをプログラムで表現するとこのようになります。

bubblesort_sample.c

	int a[5] = { 5, 3, 9, 1, 8 };
	int i, j, buf;

	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 4; j++)
		{
			if (a[j] > a[j + 1])
			{
				buf = a[j];
				a[j] = a[j + 1];
				a[j + 1] = buf;
			}
		}
	}



-アルゴリズム

Copyright© ツナのエンジニアブログ , 2024 All Rights Reserved Powered by AFFINGER5.