【課題2− 24】 提出課題(11) 下のプログラムは.配列に格納された要素を,基本交換法(バブルソート)を用いて昇順に並び替えるものである.下の空欄A〜Dを埋めよ. #include #define N 8 int main(void) { int data[N] = {16, 41, 28, 33, 64, 2, 75, 59}; int i, j, temp, exchange; for (i = 0; i <「A」; i++) { // iのループ範囲は... exchange = 0; //交換回数をクリア for (j = 0; j <「B」; j++) { // jのループ範囲は... if (「   C   」) { // となりの要素と大小比較 temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; exchange++; //交換回数をインクリメント } } if (「  D  」) //交換回数が0ならループ終了 break; } for (i = 0; i < N; i++) printf("%d ", data[i]); return 0; } 【実行結果】 2 16 28 33 41 59 64 75 【解説とヒント】 ソートのアルゴリズムにはたくさんの種類がある.この基本交換法は,最大の要素が順次移動して配列の最後に押し出されてくる様子が,泡(バブル)が水面から出てくる様子に似ているのでバブルソートとも呼ばれ,最も有名なソート法である. やっていることは「ある要素を次の要素と比較して,それより大きければ入れ替える」の繰り返しである.最終的には最も大きいものが最後に,最も小さいものが最初の要素にくる.ソートのアルゴリズムの中で最も理解しやすいものであるが,反面ステップ数が多いため,要素数が多いときには実行速度が遅くなるという欠点がある.