高效插入和搜索字符串

Sof*_*ter 3 c# search

在一个应用程序中,我将有大约3000到30000个字符串.在创建之后(从无序的文件中读取)将不会有很多字符串经常被添加(但有时会有!).删除字符串也不会经常发生.将字符串与存储的字符串进行比较将经常发生.

我最好使用什么样的结构,哈希表,树(Red-Black,Splay,......)或者只是在有序列表中(可能是StringArray?)?

(补充说明:一个好的C#实现的链接也将受到赞赏)

Nol*_*rin 7

听起来你只需要一个哈希表.在HashSet<T>这样似乎是理想的选择.(你似乎不需要钥匙,但Dictionary<T>如果你这样做,那将是正确的选择.)

以下是HashSet<T>对大小不同操作的时间复杂性的总结n.它们部分地基于类型使用数组作为后备数据结构的事实.

  • 插入:通常O(1),但可能O(n)需要调整数组大小.
  • 删除: O(1)
  • 存在(包含):( O(1)给出理想的哈希表桶)

如果有任何错误请有人纠正我.根据我对实现/哈希表的了解,它们只是我最好的猜测.