プログラムの勉強のための問題集 - 問題8.配列のデータをソートしなさい(2) - 単純交換法
問:記の配列のデータを単純交換法を用いて昇順にソートしなさい。
#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つを比べます。
②⑧ ③① ⑤
③と①を比べると、①の方が小さいので、入れ替えます。
次は下記の二つを比べます。
② ⑧① ③⑤
⑧と①を比べると、①の方が小さいので、入れ替えます。
次は下記の二つを比べます。
②① ⑧③⑤
②と①を比べると、①の方が小さいので、入れ替えます。
①②⑧③⑤
こうすることで、一番小さい数字を左端へと持って行くことが出来ました。
コレと同様の作業を繰り返し、終端位置を一つずつ手前で終えていくことで
ソートすることが出来るのです。 これが単純交換法の考え方です。
このページのトップはこちら です。