最近,在一次采访中有人问我有关数据结构的用法。 问题是:在创建英文字典时,我打算使用什么数据结构?词典将包含每个字母下的单词数,每个单词具有1个含义。另外,我将如何实现数据结构来更新,搜索和选择不同的单词?
您对男人有何建议?您提出建议的原因是什么?
答案 0 :(得分:1)
哈希表将是实现具有更新,搜索和选择功能的字典的首选数据结构。
哈希表是可以存储键值对的数据结构。它实质上是一个包含所有要搜索的键的数组。哈希函数( h() )用于计算数组的索引,可以在其中插入或搜索元素。因此,当需要插入时,哈希函数用于查找需要插入元素的位置。
在合理假设下的插入为 O(1) 。每次插入数据时,插入数据需要 O(1) 时间(假设哈希函数为 O(1)) )。
查找数据也类似。如果需要找到单词 x 的含义,则需要计算 h(x) ,这将告诉我们 x 在哈希表中的位置。因此,我们也可以在 O(1) 中查找单词(哈希值)。
但是, O(1) 插入和搜索并不总是正确。没有什么可以保证哈希函数不会为两个不同的输入产生相同的输出,因此会发生冲突。为了处理这种情况,可以采用各种策略,即单独链接和开放式寻址。但是搜索/插入将不再是 O(1) 。