【发布时间】:2021-07-24 14:10:10
【问题描述】:
谁能解释一下
Dictionary.ContainsValue?
我知道Dictionary.ContainsKey 的复杂度是 O(1)。
【问题讨论】:
-
Dictionary.ContainsKey 复杂度为 O(1) - 使:接近 O(1) Dictionary
标签: c# performance dictionary
谁能解释一下
Dictionary.ContainsValue?
我知道Dictionary.ContainsKey 的复杂度是 O(1)。
【问题讨论】:
标签: c# performance dictionary
简答:O(N)
长答案:
此方法执行线性搜索;因此,平均执行时间与 Count 成正比。也就是说,这个方法是一个 O(n) 的运算,其中 n 是 Count。
【讨论】:
ContainsValue 必须进行线性搜索会很高兴看到。
O(n)。
此方法执行线性搜索;因此,平均执行时间与 Count 成正比。也就是说,这个方法是一个O(n)的运算,其中n是Count。
特别是,在字典结构中,密钥是在散列机制中生成的。当调用ContainsKey 函数时,它计算哈希码参数并检查该计算参数是否存在于哈希表中。
字典的值没有经过哈希处理,当调用ContainsValue 函数时,算法必须遍历存储的值,直到找到第一个匹配项(如果存在)。
请注意,如果您使用此功能,您可能需要另一种结构,该结构可以更复杂地工作。您可以将所有值存储在 HashSet<T> 中。
【讨论】:
ContainsValue 必须进行线性搜索会很高兴看到。