ruby

スポンサーリンク
プログラミング

【動的計画法】ロッド切り出し問題

12月、1月はCODEVS4に集中してたり、2月はうわおえを更新してたりで、アルゴリズムイントロダクションを勧められていなかったが再開! 動的計画法を解説している書籍やサイトでは、ナップザック問題を取り上げている場合が多い気がする。 でも...
プログラミング

rubyの2分探索木実装

理屈は知っていても、なかなか自分で実装することはないであろう2分探索木を実装する。 class BinaryTree attr_accessor :root def initialize self.root = nil...
プログラミング

バケツソートをRubyで

バケツソート、これは内部で使っている挿入ソート部分以外で比較をしないソート。 なんかwikipediaのバケツソートのページを見ると、計数ソートと同じだとか、計数ソートのコードや図が乗っているという無茶苦茶な状態なので、英語版のwikipe...
プログラミング

rubyで計数ソート

バブルソート、挿入ソート、選択ソート、ヒープソート、マージソート、クイックソート、ノームソートなどなどなどなど、、 これらはソートの為に値と値を比較するで、ある一定の計算量は必要になっています。 が、スリープソート、計数ソート、基数ソート...
プログラミング

[ruby] ヒープソート実装

ヒープソートも書いた。 配列 a[] を下の図のように使えば、ヒープを表すことができるため、ヒープの実装には配列を使う。 子の添字を取得することも用意で、左の子は添字 * 2 + 1、右の子は添字 * 2 + 1で求めることができる...
プログラミング

[Ruby] 最大部分配列問題を解く

最大部分配列問題。 配列内のある部分を足しあわせたとき、その合計が最大化する部分を探す問題。 例えば配列 があったときに、足しあわせた合計が最大になる部分は、添字1〜4の。要素の合計は15になる。 分割統治法を利用して解くことになる。...
プログラミング

RubyのArrayのcombination

集合の組み合わせを全探索する場合、組み合わせをビット演算で実現することがあると思う。 C++でdataの組み合わせを全て列挙する例と実行結果を載せる。 #include <iostream> #define N 4 int...
プログラミング

Ruby マージソート実装

今回はArrayクラスに組み込んだ。 Rubyでは配列外アクセスはnilが帰るだけなので、番兵じゃなくても良い気がするが、ここはセオリーに従い実装。 class Array def merge_sort!(s = 0, e = siz...
プログラミング

Ruby 挿入ソート実装

今回は挿入ソートの実装。 ソート周りは、Rubyらしく書いている以下の記事もあるけど、本記事ではアルゴリズムの手順そのままRubyで書く。。。え、C使えよって? で実装はこれ a = 1.upto(a.size-1) do |i|...
プログラミング

[Ruby] ワーシャルフロイド法

名前も実装もかっこいいアルゴリズムのワーシャルフロイド法をrubyで実装する。 重み付きで有向な、しかもコストが正の場合に、全点間の最小コストを非常に簡潔にかくことができるもの。 INF = 9999999.freeze nodes_...
スポンサーリンク
タイトルとURLをコピーしました