2016-01-27から1日間の記事一覧

最大部分配列

分割統治の例です。配列の中から、部分和が最大となる部分配列を探し出し、その最初と最後のインデックス、および最大の部分和を返します。 重要なのはメソッド fmcs(find-max-crossing-subarray)です。 class Array def fmcs(low, mid, high) left_sum = …

安全なモンキーパッチについて(Ruby)

Module#refine を使って、クラス内だけでモンキーパッチすることができます。これでかなり安全だと思います。この例だと、クラス A の中で String のモンキーパッチをやっていますが、これはモジュールの外の名前空間を汚染しません。自分だけで使うプログラ…

バブルソート

class Array def bubble_sort a = dup for i in 0..(a.size - 2) (a.size - 1).downto(i + 1) do |j| a[j], a[j - 1] = a[j - 1], a[j] if a[j] < a[j - 1] end end a end end p [6, 0, 5, 2, 3].bubble_sort #=>[0, 2, 3, 5, 6] アルゴリズムイントロダクシ…