[ 高橋のページ ] [ プログラミングおよび実習II2006 ]

プログラミングおよび実習II 2006年10月13日

今日の課題: バブルソートによる並べかえのプログラム

テストの得点を表すデータがいくつか与えられたときに,

  1. それらを配列に格納する
  2. それらを昇順にバブルソートする
  3. できた配列の内容を表示する

というプログラムを作りましよう.前回同様に,

こととします.

課題1013-A(締切: 今日の実習開始後すぐ,締切後チェック対象外)

課題1013-B(締切: 今日の実習終了時)

課題1013-C(おまけ,締切: 今日の実習終了時,締切後チェック対象外)

課題1013-D(さらにおまけ,締切: 来週の実習開始後すぐ,締切後チェック対象外)

<ステップ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弾によって)このステップを終了した時点で処理を終えられることになります.

以下のような方針で考えるとよい鴨

おまけ

http://tortoise1.math.ryukoku.ac.jp/~takataka/course2006/prog2/PrintDataBubble.png

ひつこくおまけ

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

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-13 (水) 13:45:19