我对C hsarp词典有一个非常具体的问题。 假设你在字典中有100000个数据
var dictionary = new Dictionary<string, int>();
你已经用...填写了字典
dictionary.Add("car", 1);
dictionary.Add("apple", 2);
...
...
现在假设您正在搜索字典中的特定字符串
if (dictionary.ContainsKey("apple"))
{
// then do this
}
我的问题是,字典如何从众多密钥中搜索这个特定值? 它是通过线性搜索。但msdn声称字典搜索的复杂性接近于O(1)LinkMSDN
我对Dictionary的了解是它没有任何内部搜索/排序算法。 link
任何人都可以解释字典如何将其值存储在内存中以及如何从系统的角度检索值。我知道作为一名高级程序员,我们不需要考虑.Net的所有这些功能,但很高兴知道。其实我很想知道。 MSDN表示它使用哈希表,但没有解释。
答案 0 :(得分:2)
您可以在问题的同一link中看到:
使用密钥检索值非常快,接近O(1), 因为Dictionary类是作为哈希实现的 表强>
我相信你需要阅读有关哈希表的内容。
可能一个好的起点是:Hash Tables - Data Structures