タグ

ブックマーク / mjh.hatenadiary.org (1)

  • Rubyで上位n件を求める - mjh.日記@渋谷 with TH55

    最近は仕事先以外でコードを書くことが多くなっている。 特にここ1・2ヶ月はパズルとかの問題を解くために実験的に多くの組み合わせの計算をRubyにさせることが多い。このときにしばしば欲しくなるのが「上位n件を求める」機能。配列に設定済みのデータであれば、Array#sortを呼び出した後に配列の先頭を見れば良いのだけど、以下の点が気になる。 上位10件を求めるときに100万件のデータを貯めておいて完全にソートするのはメモリと時間の無駄 Arrayで扱わない無限個のデータには対応できない 例えば、一万個の乱数を求めてその値の上位5件を表示させたいのなら、こんな感じで簡単に取り出したい。(以下、コードはすべてRuby 1.9) topn = TopN.new(5) 1.upto(10000).each do topn << Random.rand end topn.each_with_index

    Rubyで上位n件を求める - mjh.日記@渋谷 with TH55
    seuzo
    seuzo 2010/10/24
  • 1