Top / プログラミングおよび実習II / 20061013
[ 高橋のページ ] [ プログラミングおよび実習II2006? ] プログラミングおよび実習II 2006年10月13日 †[edit]今日の課題: バブルソートによる並べかえのプログラム †[edit]テストの得点を表すデータがいくつか与えられたときに,
というプログラムを作りましよう.前回同様に,
こととします. 課題1013-A(締切: 今日の実習開始後すぐ,締切後チェック対象外) †[edit]
課題1013-B(締切: 今日の実習終了時) †[edit]
課題1013-C(おまけ,締切: 今日の実習終了時,締切後チェック対象外) †[edit]
課題1013-D(さらにおまけ,締切: 来週の実習開始後すぐ,締切後チェック対象外) †[edit]
<ステップ0の途中> 0 1 2 3 4 5 6 7 8 9 [ 1] [ 2] [ 3] [ 4] [ 5] [ 8] [ 6] [ 7] [ 9] [ 10] o(^-^)o このようなデータの場合,j = 6 のときに5番目と6番目が交換されて <ステップ0終了時> 0 1 2 3 4 5 6 7 8 9 [ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 8] [ 7] [ 9] [ 10] ↑確 となった後は,第 i = 0 ステップの処理では一度も交換がおこりません.ということは,実は,この第0ステップ終了時点では,0番目が確定できるだけではなく,1番目から5番目までもソート済みとして確定できることになります. したがって,次に第 i = 1 ステップに進むのではなく,i = 1から5までのステップを飛ばして,次はいきなり第 i = 6 ステップに進むことができます. <ステップ6の途中> 0 1 2 3 4 5 6 7 8 9 [ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 8] [ 7] [ 9] [ 10] ↑確 ↑確 ↑確 ↑確 ↑確 ↑確 o(^-^)o そして,第7ステップでは一度も交換がおこらないので,(改良第1弾によって)このステップを終了した時点で処理を終えられることになります. 以下のような方針で考えるとよい鴨
おまけ †[edit]ひつこくおまけ PrintDataBubble()をさらに改造するなら… --- step 5 --- [ 1] [ 2] [ 3] [ 4] [ 5] [ 7] [ 6] [ 8] [ 9] [ 10] *** *** *** *** *** o(^-^)o --- step 5 --- [ 1] [ 2] [ 3] [ 4] [ 5] [ 7] [ 6] [ 8] [ 9] [ 10] *** *** *** *** *** o(>_<)o --- step 6 --- [ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 7] [ 8] [ 9] [ 10] *** *** *** *** *** *** o(^-^)o |