サイトアイコン ツナのエンジニアブログ

単純選択ソートのアルゴリズム

単純選択ソートとは

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

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

添え字 [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

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

バブルソートに比べ、交換回数が少ないので高速です。
https://tunasalmon.com/2017/01/01/%e3%83%90%e3%83%96%e3%83%ab%e3%82%bd%e3%83%bc%e3%83%88/

ソースコード

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

#include <stdio.h>

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[j])
				min = j;
		}


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

	return 0;
}

このサイトに掲載しているソースコードの多くはmain()関数のみで記述しているので、関数化して他のプログラムでも使えるようにすると良いでしょう。関数を参考にしてください。
https://tunasalmon.com/2016/07/18/%E9%96%A2%E6%95%B0/

その他のソートの方法についてはこちら。
https://tunasalmon.com/2017/08/30/%E3%82%BD%E3%83%BC%E3%83%88/



(adsbygoogle = window.adsbygoogle || []).push({});

モバイルバージョンを終了