在 Ruby 中,集合操作与数组操作的效率比较。

8

在操作中,集合和数组之间的效率差异是什么?

例如:

  • 查找
  • 迭代
  • 包含?
1个回答

15
在Ruby语言中,使用Hash作为底层存储实现的Set集合,通常具有与Hash相当的性能表现。因此:
  • include?方法:对于Set,时间复杂度为O(1),而对于Array则为O(n)
  • 枚举操作:对于两者,时间复杂度均为O(n)
  • delete方法:对于Set,时间复杂度为O(1),而对于Array则为O(n)

如果你所说的"lookups"是指通过索引查找元素,那么需要注意,Set的默认实现无序,因此不支持像Array一样的按索引查找操作。


你能解释一下为什么在 set 中 include? 的时间复杂度是 O(1) 吗?它不是要检查集合中的每个值吗?Set 是如何使用底层哈希实现的?这意味着像 ["a", "b", "c"] 这样的数组在 Set 中被存储为 { "a" => "a", "b" => "b", "c" => "c" },我说得对吗? - Rajan Verma - Aarvy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接