哪种搜索更快,二进制搜索或使用前缀树?

时间:2013-06-24 10:20:12

标签: algorithm binary-search prefix-tree

假设我有一个字符串列表和这些字符串的前缀树,我想找到一个给定键的字符串,哪一个更快?二分搜索还是前缀树搜索?

为什么以及时间复杂度是什么?

谢谢!

1 个答案:

答案 0 :(得分:6)

这两种技术都有其优点和缺点:

后缀树

  • 优点:
    • O(N)建筑复杂性
    • O(M)搜索长度为M
    • 的图案
    • 他们允许在线构建
  • 缺点:
    • 空间效率低下
    • 非常复杂的构造算法

二进制搜索(带后缀数组)

  • 优点:
    • 您可以在O(N)时间
    • 中对字符串数组进行排序
    • 节省空间(至少减少五倍的内存)
    • 简单直接的构造算法
  • 缺点:
    • 他们不支持在线构建
    • O(M lg N)在N个字符串中搜索长度为M的模式的时间(这可以减少到O(M + lg N),但这仍然比后缀树慢一点)

这两种数据结构都非常强大。如果您的应用程序需要快速搜索,并且提供的空间足够,那么一定要选择后缀树。但是如果空间很重要,那么后缀数组(二进制搜索)是你唯一的选择......