Tag: 数据结构

我应该购买哪些数据结构和algorithm书?

我知道C和C + +,我有一些Java的经验,但我不太了解algorithm和数据结构。 我在亚马逊search了一下,但是我不知道该选什么书。 我不想要一本只在理论部分提出它的基础的书。 我也想要实际的部分(可能比理论的更:))。 我不希望代码以某种语言来实现,但如果是在Java中,我可能会更快乐。 🙂

java有一个“LinkedConcurrentHashMap”数据结构吗?

我需要一个LinkedHashMap的数据结构,并且是线程安全的。 我怎样才能做到这一点 ?

二叉search树 – Java实现

我正在编写一个程序,利用二叉search树来存储数据。 在以前的程序(不相关)中,我能够使用Java SE6提供的实现来实现链表。 是否有类似的二叉search树,还是我需要“从头开始”?

Python中元组和frozense的区别

我正在使用“快速Python书籍”学习Python 3,作者在这里谈到了frozensets,指出由于集合是可变的,因此不能被修改,因此不适合作为字典密钥,而是引入了冻结的对应关系。 除了一个元组是一个有序的数据结构而frozenset或者更一般地说是一个无序的明显不同之外,元组和冷凝集之间还有其他区别吗?

C#中有像C ++一样的指针吗? 安全吗?

我正在编写一个与树型数据结构一起工作的应用程序。 我用C ++编写了它,现在我想用C#编写它。 我使用指针来实现树型数据结构。 C#中是否有指针? 使用它安全吗?

磁盘支持的STL容器类?

我喜欢使用STL开发algorithm,但是,在我的数据集对于堆太大的情况下,我有这个反复出现的问题。 我一直在寻找替代STL容器和algorithm的磁盘备份,也就是存储在磁盘而不是堆上的数据结构。 最近朋友指出我对stxxl 。 在我涉及之前…是否有其他的磁盘备份STL替代品,我应该考虑? 注意:我对持久性或embedded式数据库不感兴趣。 请不要提及boost :: serialization,POST ++,关系模板库,Berkeley DB,sqlite等。我知道这些项目,并在适合我的目的时使用它们。 更新:有几个人提到了内存映射文件,并使用自定义分配器,很好的build议顺便说一句,但我会指出他们在这里的讨论David Abrahambuild议磁盘备份容器需要自定义迭代器。 这意味着自定义分配器的方法是不可能的。

在Clojure中代表一棵树

在Clojure中代表一棵树的习惯用法是什么? 例如: A / \ BC /\ \ DEF 性能不重要,树木不会超过1000个元素。

有效的内存替代Python字典

在我目前的一个项目中,我正在阅读一些文字,看三字组的频率。 在我第一次使用它的时候,我使用了三层深度的默认字典。 换句话说, topDict[word1][word2][word3]返回这些单词在文本中出现的次数, topDict[word1][word2]返回一个字典,其中所有单词出现在单词1和2之后。 这function正常,但它是非常内存密集型的。 在我最初的testing中,它使用了像存储三元组的文本文件20倍的内存,这似乎是一个过多的内存开销。 我的怀疑是,这些字典中的许多字段的创build数量比实际使用的字段多,所以我想用这种方式replace字典中更有记忆效率的其他字典。 我强烈希望有一个解决scheme,允许沿着字典的关键查找。 从我所了解的数据结构来看,使用类似红黑或AVL的平衡二叉search树可能是理想的,但我真的不希望自己实现它们。 如果可能的话,我宁愿坚持使用标准的Python库,但如果他们能够最好地工作,我绝对可以接受其他的select。 那么,有没有人对我有任何build议? 编辑添加: 感谢迄今的回应。 到目前为止,答案中的一些已经build议使用元组,当我将前两个单词压缩成元组时,这些元组并没有太多的用处。 我不愿意把这三个字作为一个关键字,因为我希望能够容易地查看前两个字的所有第三个字。 (即我想要的东西像topDict[word1, word2].keys() )的结果。 我正在玩的当前数据集是维基百科学校的最新版本。 例如,parsing第一千页的结果对于文本文件是11MB,其中每行是三个词并且所有的tab都是分开的。 以字典格式存储文本我现在使用大约185MB。 我知道指针和额外的开销会有一些额外的开销,但差异似乎过大。

实体属性值(EAV)的替代scheme?

我们的数据库是基于EAV(Entity-Attribute-Value)模型devise的。 那些曾经使用过EAV模型的人,为了灵活性而知道所有的垃圾。 我问客户有关使用EAV模型(灵活性)的原因,他们的回答是:他们的实体随着时间而改变。 所以,今天他们可能有一个有几个属性的表,但在一个月的时间里,可能会添加一些新的属性,或者现有的属性可能会被重命名。 他们需要生成报告以及时返回到任何阶段,并根据当前实体的形状查询数据。 我知道这对传统的关系模型来说是不可行的,但我个人认为EAV是反模式的。 是否有其他的替代模型,使我们能够捕捉实体和实例变化的时间维度? 干杯,Mosh

标准c库是否提供链表等数据结构?

标准的C库实现,特别是glibc (GNU C库)提供链表,stack等。 数据结构,还是我们必须推出自己的? 谢谢。