Questions tagged «data-structures»

数据结构是以一种组织数据的方式,该方式允许有效地查询和/或更新该数据的特定属性。

16
基于数基系统的算法?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我最近注意到,有很多算法部分或全部基于创造性基础中数字的巧妙使用。例如: 二项式堆基于二进制数,更复杂的偏斜二项式堆基于偏斜二进制数。 一些用于生成按字典顺序排列的排列的算法基于乘数系统。 可以将尝试看作是一棵树,它以适当的基数一次查看字符串的一位。 霍夫曼编码树被设计为使树中的每个边缘在某种二进制表示中编码为零或一。 斐波那契搜索中使用斐波那契编码,并反转某些类型的对数。 我的问题是:还有哪些其他算法将聪明的数字系统用作直觉或证明的关键步骤?。我正在考虑就该主题进行一次讨论,因此,我必须从中汲取更多的例子,效果会更好。

8
为什么.NET中没有Tree <T>类?
.NET中的基类库具有一些出色的集合数据结构(列表,队列,堆栈,字典),但奇怪的是,它不包含任何用于二叉树的数据结构。对于某些算法,例如利用不同遍历路径的算法,这是非常有用的结构。我正在寻找正确编写的免费实现。 我只是盲目而没有找到它吗...它埋在BCL中的某个地方吗?如果不是,那么有人可以为二进制树推荐一个免费的或开源的C#/。NET库吗?最好是采用泛型的。 编辑:澄清我在找什么。我对内部使用树的有序字典集合不感兴趣。我实际上对一棵二叉树感兴趣-一棵二叉树公开了它的结构,以便您可以执行诸如提取子树之类的操作,或对节点执行修复后遍历。理想情况下,可以扩展此类以提供特殊树的行为(即,红色/黑色,AVL,平衡的树等)。

1
各种数据结构的时间复杂度是多少?
我试图列出常见数据结构(如数组,二进制搜索树,堆,链表等)的时间复杂性,尤其是我指的是Java。它们很常见,但我想我们当中有些人对确切答案并不100%自信。任何帮助,特别是参考资料,将不胜感激。 例如,对于单链表:更改内部元素为O(1)。你怎么能这样做?你HAVE更改它之前要搜索的元素。同样,对于向量,添加内部元素的方式为O(n)。但是为什么我们不能使用索引在固定的摊销时间内完成呢?如果我缺少某些东西,请纠正我。 我将我的发现/猜测发布为第一个答案。

12
Java中的排序数组列表
我为无法快速找到答案感到困惑。我实质上是在寻找Java中的一种实现java.util.List接口的数据结构,但该结构按顺序存储其成员。我知道您可以使用法线ArrayList并Collections.sort()在其上使用,但是我遇到的情况是,我偶尔会添加并经常从列表中检索成员,并且我不想每次检索成员时都对其进行排序,以防万一新增加了一个。谁能指出我在JDK甚至第3方库中都存在的这种东西? 编辑:数据结构将需要保留重复项。 总结:我发现所有这些都很有趣,并且学到了很多东西。特别值得一提的是Aioobe,因为他在实现上述要求方面的毅力(主要是支持重复项的有序java.util.List实现)。我接受了他的回答,这对我的要求是最准确的,并且即使我提出的要求不完全是我所寻求的含义,也最能引起我的思考。 我所要求的问题在于List接口本身以及接口中可选方法的概念。引用javadoc: 该界面的用户可以精确控制列表中每个元素的插入位置。 插入排序列表并不能精确控制插入点。然后,您必须考虑如何处理某些方法。就拿add例如: public boolean add(Object o) Appends the specified element to the end of this list (optional operation). 现在,您处于以下两种情况中的一种令人不舒服的情况:1)打破合同并实现add的排序版本2)让add元素添加到列表的末尾,破坏排序的顺序3 add)通过抛出来抛弃(作为其可选项)一UnsupportedOperationException和实施这增加了在一个有序的物品的另一种方法。 选项3可能是最好的,但是我发现它不适合使用具有不能使用的add方法和不在接口中的另一个sortedAdd方法。 其他相关解决方案(无特定顺序): java.util.PriorityQueue,它可能比我所需要的更接近我的需求。在我的案例中,队列不是对象集合的最精确定义,但是在功能上,它可以完成我需要做的所有事情。 net.sourceforge.nite.util.SortedList。但是,此实现通过实现add(Object obj)方法中的排序打破了List接口的协定,并且奇怪的是没有的方法add(int index, Object obj)。总体共识表明,throw new UnsupportedOperationException()在这种情况下可能是更好的选择。 Guava的TreeMultiSet一个支持重复项的set实现 ca.odell.glazedlists.SortedList 此类在Javadoc中附带警告:Warning: This class breaks the contract required by List

5
从字节数组读取C#中的C / C ++数据结构
从数据来自C / C ++结构的byte []数组填充C#结构的最佳方法是什么?C结构看起来像这样(我的C非常生锈): typedef OldStuff { CHAR Name[8]; UInt32 User; CHAR Location[8]; UInt32 TimeStamp; UInt32 Sequence; CHAR Tracking[16]; CHAR Filler[12]; } 并会填充如下内容: [StructLayout(LayoutKind.Explicit, Size = 56, Pack = 1)] public struct NewStuff { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] [FieldOffset(0)] public string Name; [MarshalAs(UnmanagedType.U4)] [FieldOffset(8)] public uint User; [MarshalAs(UnmanagedType.ByValTStr, SizeConst …


6
Javascript中键/值对的对象与数组
假设您有一个非常简单的数据结构: (personId, name) ...并且您想将其中一些存储在javascript变量中。如我所见,您有三个选择: // a single object var people = { 1 : 'Joe', 3 : 'Sam', 8 : 'Eve' }; // or, an array of objects var people = [ { id: 1, name: 'Joe'}, { id: 3, name: 'Sam'}, { id: 8, name: 'Eve'} ]; // or, …

4
如何在map和unordered_map之间选择?
假设我想使用字符串作为键来映射数据。什么容器应该怎么选择,map还是unordered_map?unordered_map占用更多的内存,所以让我们假设内存不是问题,而关注的是速度。 unordered_map通常应该给出O(1)的平均复杂度,而O(n)的最坏情况。在什么情况下会达到O(n)?什么时候map可以获得比更高的时间效率unordered_map?当n小时会发生吗? 假设我将STLunordered_map与默认的haser Vs一起使用。地图。字符串是关键。 如果我要遍历元素而不是每次都访问单个元素,我应该优先map吗?



4
Linq-SelectMany混乱
据我从SelectMany的文档中了解到的,可以用它来产生一个(平整的)一对多关系的序列。 我有以下课程 public class Customer { public int Id { get; set; } public string Name { get; set; } } class Order { public int Id { get; set; } public int CustomerId { get; set; } public string Description { get; set; } } 然后,我尝试使用查询表达式语法使用它们,如下所示 var customers = …


9
可哈希的,不可变的
从最近的一个SO问题(请参阅在python中创建由列表索引的字典)中,我意识到我可能对python中可哈希和不可变对象的含义有错误的理解。 在实践中,hashable是什么意思? 可哈希和不可修改之间有什么关系? 是否存在可哈希的可变对象或不可哈希的不可变对象?


4
后缀树和尝试。有什么不同?
我正在阅读有关Tries通常称为Prefix树和的信息Suffix Trees。 虽然我找到了的代码,Trie但找不到的示例Suffix Tree。我也感觉到,构建a的代码与a的代码Trie相同,Suffix Tree唯一的区别是,在前一种情况下,我们存储前缀,而在后缀中。 这是真的?谁能帮我解决这个问题?示例代码将对您有很大的帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.