プログラムの勉強のための問題集 - 問題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番目から最後までで一番小さい数字を探して、同じように入れ替えます。
①②③⑤⑧
この通り、昇順にソートすることが出来ました。
これが単純選択法の考え方です。
このページのトップはこちら です。