IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

一些不常见但是很重要的数据结构

用心去做 2019-02-21 21:49:23 累计浏览 2,395 次
本机暂存

   这篇文章是stackoverflow的一篇帖子。上面提到了很多有用的数据结构。有的听过了,经常用,有的没有听过,记录下来。

  1. Trie树。应用比较多,一个比较cool的trie的应用TRASH-A dynamic LC-trie and hash data structure。

  2. Bloom filter。wiki链接 删除某一项是不允许的,不过可以实现可计数的counting bloom filter

  • 在BigTable,Cassandra中都有使用

  • 可以用来快速检查是否拼写错误

  • Rope:rope 数据结构表示不能修改的字符序列,与 Java 的 String非常像。但是 ropes 效率奇高的字符串变换操作使得它与 String及其同一体系的可修改的 StringBuffer和 StringBuilder大不相同,非常适合那些执行繁重字符串操纵的应用程序,尤其在多线程环境下更是如此。ibm文章 包含java实现。

    • stl实现:http://www.sgi.com/tech/stl/Rope.html

  • skip list:这里有一个演示:http://iamwww.unibe.ch/~wenger/DA/SkipList/

    • Cassandra的索引

    • redis的SortedSet

  • Spatial Indices:尤其是R-treesKD-trees

  • Bit Array:压缩存储bit,支持快速的bit操作。

  • Zippers: 在函数式编程中非常有用。

  • Suffix tries: 字符串搜索非常有用。更酷的是suffix tree,可以O(n)的时间构建

  • Splay trees:非常酷的结构

    1. 非常小巧,仅需要类似二叉树的左右孩子指针

    2. 相对容易实现

    3. 性能良好,wiki地址

  • Heap-ordered search trees

  • 邻接表:O(1)计算无向图的邻居节点

  • lock-free:

  • 并查集

  • fibonacci堆

  • BSP Trees:应用在3D渲染领域

  • 霍夫曼树:压缩

  • Finger Trees:在函数式结构中使用,wiki地址

  • Ring buffer

  • Merkle trees

  • Cukoo Hashing :用来提升hash方法的空间利用,基本思想是利用多个hash函数,降低冲突。

  • min-max heap

  • 缓存参数无关数据结构:Cache Oblivious datastructures

  • Left learning Red-Back Trees: 论文

  • Bootstrapped skew-binomial heaps

    • O(1) size, union, insert, minimum

    • O(logn) deleteMin

  • Interval Trees: 在Cassandra中有应用

  • 上面仅仅写了一半,就有好多我不熟悉的了。剩下的一半不是很火,更是没有听过。就先这些吧。


       本文链接:http://www.cnblogs.com/sing1ee/archive/2012/10/12/2765064.html,转载请注明。

    同分类推荐文章

    1. 对基本有序的序列排序算法 (2026-06-11 17:46:49)
    2. Four Levels Of Customer Understanding (2026-05-22 21:00:00)
    3. 除法的意义 (2026-04-12 20:52:17)

    查看更多 算法 文章 →

    建议继续学习

    1. 红黑树并没有我们想象的那么难(上) (累计阅读 21,494)
    2. 哪本书是对程序员最有影响、每个程序员都该阅读的书? (累计阅读 15,113)
    3. 为什么算法这么难? (累计阅读 12,397)
    4. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,902)
    5. 加州求职记 (累计阅读 11,561)
    6. 海量数据面试题举例 (累计阅读 11,114)
    7. 看源代码那些事 (累计阅读 10,600)
    8. 基于Redis构建系统的经验和教训 (累计阅读 10,521)
    9. 谷歌(Google)2011年校园招聘笔试题 (累计阅读 9,572)
    10. 编程能力与编程年龄 (累计阅读 9,421)