【问题标题】:Efficient list data structure高效的列表数据结构
【发布时间】:2011-08-12 17:23:45
【问题描述】:

我需要一个列表类型的数据结构来在项目中实现。实际上它不一定是某种列表,但它必须很快,我将使用它来不断地插入/删除/检索数据(其他数据结构)。我可能会插入一些东西,搜索,再次插入,删除,再次搜索等等,所以动作是随机的。

到目前为止,我发现跳过列表最快,还有什么比这更快?

【问题讨论】:

  • 你搜索的怎么样了?你在索引什么?您的问题归结为“我想要一个快速的数据结构”,但我们需要有关您的访问模式的更多详细信息才能给出真正的答案。
  • 我正在按唯一字符串进行索引。抱歉,忘记提了。

标签: c performance list data-structures skip-lists


【解决方案1】:

很大程度上取决于您选择的语言。 C 为您提供了对最终数据结构的最大控制权,您最终将获得最快的实现之一。当然,很容易在脚下射击自己。比较糟糕。 Python 抽象了很多列表数据结构,我发现它一直很快,但我也没有过分强调它。

我建议检查一下freshmeat 是否有预建的C 库,您可以将其重新用于您的任务。也许维基百科关于跳过列表的页面会指向更多:http://en.wikipedia.org/wiki/Skip_list

数据结构是一门深奥的学科,需要在大 O 表示法方面有良好的基础,以及当我们谈论“速度”和“效率”时它的确切含义,否则您将无法进行客观比较。最后,一切都有取舍。选择一种数据结构,可以最接近地模拟您的数据以及您打算如何操作它。如果您的任务相当随机,请回到设计阶段并问问自己如何在数据结构之前改进发生的事情。也就是说,敲定你的算法,然后选择一个数据结构来补充它。

【讨论】:

  • C 是我使用的语言。该项目通过运行时进行测试,因此执行所有这些操作的速度越快越好。这在记忆方面并不重要。
【解决方案2】:

hashtable/hashmap/dictionary 听起来像你想要的。例如,dictionaries 在 Python 中。

【讨论】:

    【解决方案3】:

    您可以查看BTree

    【讨论】:

      猜你喜欢
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      相关资源
      最近更新 更多