Algorithm 适用于以下情况的有用数据结构
这可能是以下情况的最佳数据结构 1.应具有搜索、插入和删除等操作。大部分搜索活动都会在那里进行。大约90%的操作是搜索,其余的是删除和插入 2插入、删除和搜索将基于对象的键。每个关键点都将指向一个对象。钥匙将被分类Algorithm 适用于以下情况的有用数据结构,algorithm,data-structures,Algorithm,Data Structures,这可能是以下情况的最佳数据结构 1.应具有搜索、插入和删除等操作。大部分搜索活动都会在那里进行。大约90%的操作是搜索,其余的是删除和插入 2插入、删除和搜索将基于对象的键。每个关键点都将指向一个对象。钥匙将被分类 任何关于优化数据结构的建议都将受到高度赞赏。AVL树,或至少是BST 如果你想经常使用相同的元素,你也可能需要考虑八叉树。 (我应该解释原因吗?AVL树,或者至少是BST 如果你想经常使用相同的元素,你也可能需要考虑八叉树。 (我应该解释一下原因吗?不确定您所说的“数据结构”是什么意
任何关于优化数据结构的建议都将受到高度赞赏。AVL树,或至少是BST
如果你想经常使用相同的元素,你也可能需要考虑八叉树。
(我应该解释原因吗?AVL树,或者至少是BST
如果你想经常使用相同的元素,你也可能需要考虑八叉树。
(我应该解释一下原因吗?不确定您所说的“数据结构”是什么意思 我建议。 请在此处阅读更多信息:不确定“数据结构”是什么意思 我建议。请在此处阅读更多信息:自平衡排序树(AVL,RB)或哈希表。自平衡排序树(AVL,RB)或哈希表。我猜您希望优化时间。总体而言,a在所有三个操作中都具有对数时间性能。这可能是你在执行时间上的最佳整体赌注;但是,红黑树的实现非常复杂,需要一个节点结构,这意味着它们将使用比包含的数据本身所需的内存更多的内存来存储。我猜您希望优化时间。总体而言,a在所有三个操作中都具有对数时间性能。这可能是你在执行时间上的最佳整体赌注;但是,红黑树的实现非常复杂,需要一个节点结构,这意味着它们将使用比包含的数据本身所需的更多内存来存储。您想要一个树支持的映射;基本上,您只需要一棵树,其中节点按键进行动态排序(“自平衡”),对象悬挂在每个节点上,并具有相应的键 如果你想要一个“最优”的数据结构,那完全取决于你所期望的输入模式的分布。自平衡树的好处在于,您不需要太在意输入的模式。如果您真的希望最佳猜测尽可能接近我们所知的最佳,并且您对特定的查询序列不太了解,那么您可以使用一个名为
O(log(log(N))
-竞争性。这一增长速度非常缓慢,因此,从所有实际用途来看,您可以选择最佳数据结构中的一个常数作为有效的执行因子
尽管实现起来有点麻烦,但最好使用库来实现自平衡树
Python:
爪哇:
如果您只是Java,只需使用一个
TreeMap
(基于红黑树)并忽略实现细节。大多数语言的标准库中都有类似的数据结构。您需要一个树状映射;基本上,您只需要一个节点动态排序(“自平衡”)的树按键,对象悬挂在具有相应键的每个节点上
如果您想要“最佳”数据结构,这完全取决于您所期望的输入模式的分布。自平衡树的好处是,您不需要太在意输入模式。如果您真的希望最佳猜测尽可能接近我们所知的最佳,并且您不太了解查询的特定序列s、 您可以使用一个具有竞争力的O(log(log(N))
。它的增长速度非常慢,以至于在所有实际应用中,您都可以从您可能选择的最佳数据结构中选择一个常数因子来有效地执行某些操作
尽管实现起来有点麻烦,但最好使用库来实现自平衡树
Python:
爪哇:
如果你只是Java,只需使用一个
TreeMap
(基于红黑树),忽略实现细节。大多数语言的标准库中都有类似的数据结构。“最优”?你想优化什么?时间?内存使用?代码行?@S.Lott,我的经验法则是“最优”是头韵的一种量度,因此链表通常是正确的答案。你说的“密钥将被排序”是什么意思?它们是按排序的顺序出现的?你想按排序的顺序迭代它们吗?@davin:很好。我花了很长时间为“大的内部IT”工作,其中最优方法“使用我们已经许可的RDBMS”。我不能很好地回答这个问题。可能是“最优”的重复?你想优化什么?时间?内存使用?代码行?@S.Lott,我有一个经验法则,当我有疑问时,“最优”是头韵的一个度量,因此链表通常是正确的答案。你说的是什么“密钥将被排序”?它们是按排序的顺序来的?你想按排序的顺序迭代它们吗?@davin:说得好。我花了很长时间为“大的内部IT”工作,其中optimal means使用我们已经授权的RDBMS“我不能很好地回答这个问题。按数据结构可能重复他很可能指内存中的结构,如数组、列表、字典、树、堆等。哦,好吧,酷!我想是这样。但是当他提到“操作”时”,我想是DB。谢谢!从数据结构来看,他很可能是指内存中的结构,如数组、列表、字典、树、堆等。哦,好吧!我想是这样。但当他提到“操作”时,我想是DB。谢谢!这些AVL和Splay树对内存结构都很好,但性能往往很差(或难以优化实现)在磁盘上。对于面向块的媒体,B*树很难与之相比AVL树的保证复杂性为O(logn)fo