[#39863] forループの速度 — Masahiro Sato <msato@...>

15 messages 2004/07/20

[#39868] イテレータとfor文 — OOTANI TAKASHI <otn@...5.so-net.ne.jp>

大谷と申します。

31 messages 2004/07/20
[#39886] Re: イテレータとfor文 — Tietew <tietew-ml-ruby-list@...> 2004/07/21

[ruby-list:39833] Re: (要素がString, Fixnum 以外の)配列の集合演算

From: Hiroshi Takagi <gollum@...>
Date: 2004-07-06 12:21:14 UTC
List: ruby-list #39833
高木です。

なかださん、お世話になってます。


On Tue, 6 Jul 2004 18:03:50 +0900
nobu.nakada@nifty.ne.jp wrote:

> Array#include?は線形時間なのでall?全体ではO(n^2)になります。一
> 方、Hash#include?は定数時間なので、最初にHashを作る手間はありま
> すが、全体ではO(n)になります。

あ、ということは、最初に例示いただいたもののこの部分

      (v = nil; oh = {}; ov.each {|v| oh[v] = true}; sv).all? do |v|
        ov.include?(v) and

ov.include?(v) は、
oh.include?(v) の間違いですね。
 ^
疑問が氷解しました。


おかげさまで、仕事に使っているスクリプトがぐっときれいにすっきりしました。

あるネットワーク機器用に、メーカが週一回公開するオブジェクトファイル
(幸いなことにtext)を解析して、前の週から、
・削除されたもの
・更新されたもの
・新規に追加されたもの
を調べているのですが、
任意のクラスで集合演算ができることで、更新されたものの検出が
とても容易になりました。

ありがとうございました。
-- 

Hiroshi Takagi <gollum@hi-net.zaq.ne.jp>



In This Thread