Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 您应该听说过哪些复杂的数据结构?_Performance_Algorithm_Data Structures - Fatal编程技术网

Performance 您应该听说过哪些复杂的数据结构?

Performance 您应该听说过哪些复杂的数据结构?,performance,algorithm,data-structures,Performance,Algorithm,Data Structures,这是一个衍生问题,但我想问的是,您至少应该熟悉哪些数据结构才有用。然而,如果没有一些专业知识,这些结构很难实现 我想说,这两者之间的一个很好的界限是一个堆——您应该能够编写一个堆,但这需要一天的时间。编辑:我认为这取决于你在做什么。我认为如果有一个列表,上面有一个短语,总结你为什么要使用它,那将是非常棒的 以下是要开始的列表: B+树:单键上良好的通用索引结构 K-d树:空间数据 红黑树:自平衡BST;也可以是AVL或八字树 跳过列表:用于随机或(伪)顺序访问的良好混合结构 Trie:线性时间字

这是一个衍生问题,但我想问的是,您至少应该熟悉哪些数据结构才有用。然而,如果没有一些专业知识,这些结构很难实现

我想说,这两者之间的一个很好的界限是一个堆——您应该能够编写一个堆,但这需要一天的时间。编辑:我认为这取决于你在做什么。我认为如果有一个列表,上面有一个短语,总结你为什么要使用它,那将是非常棒的

以下是要开始的列表:

  • B+树:单键上良好的通用索引结构
  • K-d树:空间数据
  • 红黑树:自平衡BST;也可以是AVL或八字树
  • 跳过列表:用于随机或(伪)顺序访问的良好混合结构
  • Trie:线性时间字符串搜索

  • 这是一个良好的开端;上有一个全面的数据结构列表,其中一些应该检查。但至于你需要哪一个,这取决于你打算去的地区。。。做你正在做的任何事

    嵌入式系统的人和网络的人会有非常不同的想法,网络的人会强烈反对商业逻辑的人。弄清楚你想做什么;语言和平台也会影响您所需的列表。

    关于:

    我会将其添加到列表中。它们在概念上非常简单,但一旦您了解如何实现好的哈希函数和有效的探测方法,它们可能会变得复杂。

    引用:

    造井 理解,非常优雅,但是 令人遗憾的是,人们对数据的评价很低 具有潜在多个 应用程序(…)


    另请参见:

    与您提到的B+树密切相关:。与称为“舞动树”方法的平衡方法一起,它们构成了Reiser4的基础。

    ,特别是降阶二元决策图(ROBDD)。当有人决定创建自己的过滤系统时,这些系统会被彻底改造(效果很差)。

    。我并不认为你“应该”听说过它们,但我相信它们是一个有趣的例子,说明了你可以通过“位技巧”实现什么样的复杂性——即O(logn),指数级地优于二叉树

    ,一种在预期的恒定时间内解决哈希表冲突的简单而优雅的方法。

    (DFA),或,用于表示许多事物,如基本词法、正则表达式、状态转换等。另请参阅相关的,可用于紧凑地存储字典。

    及其变体,如,金字塔树。各种M-树变体,如细长树

    通常,查询树很容易。也可能有一个简单的批量加载(对于R树,STR通常做得很好)。棘手的部分通常是跨更新维护好的树。

    您可以尝试:

    • y-快树
    • 近似有序集
    • 选择堆
    • 紧凑阵列
    • 整体列表
    • 简明清单

    不相交集的复制非常容易实现。这很难分析。