[ 高橋のページ ] [ プログラミングおよび実習II ]
10月19日の講義資料の演習問題(バブルソートの関数を紙に書く)を提出してください.
整数のデータが与えられたときに,
というプログラムを作りましよう.名前は bubblesort.c としてください. これまでの score1.c などと同様に,
こととします.ただし,以下のことに気をつけて作成して下さい.
改良した関数の名前は BubbleSort2,プログラムのファイル名は bubblesort2.c としましょう.
以下のアイデアをもとに,さらなる改良を施しましょう
0 1 2 3 4 5 6 7 8 9 [ 10] [ 9] [ 8] [ 7] [ 6] [ 5] [ 3] [ 4] [ 2] [ 1] o(^-^)o
このようなデータの場合,第 i = 0 段階の処理では,j = 7 のときに7番目と6番目が交換されて
0 1 2 3 4 5 6 7 8 9 [ 10] [ 9] [ 8] [ 7] [ 6] [ 5] [ 4] [ 3] [ 2] [ 1] <--------------------------------------->
となった後は,一度も交換がおこりません.ということは,実は,この第0段階終了時点では,0番目が確定できるだけではなく,1番目から6番目までもソート済みとして確定できることになります.
したがって,i = 1から6までの段階を飛ばして,次はいきなり第 i = 7 段階に進むことができます.そして,第7段階では一度も交換がおこらないので,この段階を終了した時点で処理を終えられる(改良第1弾)ことになります.
改良した関数の名前は BubbleSort3,プログラムのファイル名は bubblesort3.c としましょう.
こちらをどうぞ: 「ポインタの話」