ゲーム制作者の為のプログラミング講座 -13ページ目

プログラムの勉強のための問題集 - 問題7.配列のデータをソートしなさい(1) - 単純選択法

問:下記の配列のデータを単純選択法を用いて昇順にソートしなさい。

#include <stdio.h>

int main(){
	int array[] = { 7, 3, 9, 2, 10, 8, 6, 5, 4, 1 };
	
	ここにソートプログラムを書く

	for(int i=0; i<10; i++){
		printf( "%3d", array[i] );
	}
	
	return 0;
}

※ソート : 並べ替え

※昇順 : 小さい数字から、大きい数字へ


■単純選択法とは?■

ソートの手法の一つ。

たとえば、下記のような数列があるとする。


②⑧③①⑤


これを昇順にソートしたいとすれば、

まず、数列の中で一番小さい数字を探します。


すると、①が一番小さい とわかるはずです。

一番小さい数字がわかったら、左端の数字と入れ替えます。

①⑧③②⑤


次に、2番目から一番後ろまでで一番小さい数字を探します。


① ⑧③②⑤


後ろのグループで一番小さい数字は②です。

では、左端から2番目の数字と入れ替えましょう。


①②③⑧⑤


次は3番目から一番後ろまでで一番小さい数字を探します。


①② ③⑧⑤


③が一番小さい数字なので、3番目の数字と入れ替えます。

といっても、同じ位置ですけどね。


①②③⑧⑤


次は4番目から最後までで一番小さい数字を探して、同じように入れ替えます。


①②③⑤⑧


この通り、昇順にソートすることが出来ました。

これが単純選択法の考え方です。


解答と解説


このページのトップはこちら です。