『情報科学入門 Rubyを使って学ぶ』の練習問題の解答例の他、授業スライドの練習問題の解答例や、プログラミングのポイント等を掲載します。他クラスの方の利用歓迎。改良・訂正箇所ありましたらご指摘ください。

2011/01/17

[ス]練習問題(第五章)

授業スライド「05アルゴリズムと計算量」の練習問題の解答例です。


• 配列 a の(先頭を0 番目としたときの)i 番目 以降の値の中で、最小値が出現する番号を
答える min_index(a,i) を追加して、単純整列 法を完成させよ。


def  min_index(a,i)
  min = i
  for  j  in (i+1)..(a.length()-1)
    if  a[j] < a[min]
      min = j
    end
  end
  min
end





• 省略された部分を補って関数 merge を完成させよ。
(青色が省略されていた部分)


def  merge(a,b)
  c = Array.new(a.length()+b.length())
  ia=0
  ib=0
  ic=0
  while ia < a.length() && ib < b.length()
    if a[ia] < b[ib]
      c[ic]=a[ia]
      ia = ia + 1
    else
      c[ic] = b[ib]
      ib = ib + 1
    end
    ic = ic +1
  end
  if ia < a.length()
    for j in ic..(c.length()-1)
      c[j] = a[ia]
      ia = ia +1
    end
  else
    for k in ic..(c.length()-1)
      c[k] = b[ib]
      ib = ib +1
    end
  end
  c
end

0 件のコメント:

コメントを投稿