単純選択ソート

目次

単純選択ソートとは

単純選択ソートのアルゴリズムについて解説します。
まず、一番端の要素と、残りの要素の中で最も小さい(降順なら大きい)値を持つ要素を入れ替えます。
次に二番目の要素、その次は三番目の要素…といったように順番に小さいものを探しだし並べ替えていきます。

以下の配列を例に挙げ、実際にみていきましょう。

添え字 [0] [1] [2] [3] [4]
4 2 9 6 0

まずは0番の要素と残りの中で一番小さい要素を交換します。

添え字 [0] [1] [2] [3] [4]
0 2 9 6 4

0番目の要素である4と残りの中で最も小さい0が交換されます。

添え字 [0] [1] [2] [3] [4]
0 2 9 6 4

残りの要素の中で最も小さい2は1番目なので交換の必要はありません。

以下同様に並べ替えていきます。

添え字 [0] [1] [2] [3] [4]
0 2 4 6 9
添え字 [0] [1] [2] [3] [4]
0 2 4 6 9

これでソートは完了です。

バブルソートに比べ、交換回数が少ないので高速です。

ソースコード

以下がソースコードです。

#include 

int main(void)
{
	int arr[] = { 5, 2, 6, 1, 3, 9 , 3, 7, 4, 0};
	int arr_len = 10;	//配列の長さ
	int i, j, temp;
	int min;

	for (i = 0; i < arr_len; i++)
	{
		min = i;
		for (j = i + 1; j < arr_len; j++)
		{
			if (arr[min] > arr[j])
				min = j;
		}


		temp = arr[i];
		arr[i] = arr[min];
		arr[min] = temp;
	}

	return 0;
}

このサイトに掲載しているソースコードの多くはmain()関数のみで記述しているので、関数化して他のプログラムでも使えるようにすると良いでしょう。
関数を参考にしてください。



「単純選択ソート」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA