Data structures 不同数据结构的实际应用

Data structures 不同数据结构的实际应用,data-structures,Data Structures,有很多关于数据结构的讨论,但我找不到一个简单的数据结构列表及其实际用途。我正在努力学习准备面试,我想这会对我和其他很多人都有帮助。我在找这样的东西: 数据结构-示例/用于 哈希表-快速数据查找…然后给出一个例子 数组- 二叉树- 如果有这样的资源,请让我知道 谢谢 编辑:我的意思是维基百科很好,但在大多数页面上,他们并没有列出实际用途。我要寻找的不仅仅是这些。各种数据结构的任何排名都至少部分地与问题背景相关。这将有助于学习如何分析算法的时间和空间性能。通常使用“大O表示法”,例如二进制搜索以O(

有很多关于数据结构的讨论,但我找不到一个简单的数据结构列表及其实际用途。我正在努力学习准备面试,我想这会对我和其他很多人都有帮助。我在找这样的东西:

数据结构-示例/用于

哈希表-快速数据查找…然后给出一个例子

数组-

二叉树-

如果有这样的资源,请让我知道

谢谢


编辑:我的意思是维基百科很好,但在大多数页面上,他们并没有列出实际用途。我要寻找的不仅仅是这些。

各种数据结构的任何排名都至少部分地与问题背景相关。这将有助于学习如何分析算法的时间和空间性能。通常使用“大O表示法”,例如二进制搜索以O(logn)时间为单位,这意味着搜索元素的时间是元素数量的对数(以基数2为单位,隐式)。直观地说,由于每一步都会丢弃一半的剩余数据作为无关数据,因此元素数量加倍将使时间增加1步。(二进制搜索的扩展性相当好。)空间性能关注较大数据集的内存量如何增长。另外,请注意,大O表示法忽略常量因子-对于较小的数据集,O(n^2)算法可能仍然比具有较高常量因子的O(n*logn)算法更快。复杂的算法通常在启动时有更多的工作要做

除了时间和空间之外,其他特征还包括数据结构是否已排序(树和skiplist已排序,哈希表未排序)、持久性(二叉树可以重用旧版本的指针,而哈希表可以就地修改)等

虽然您需要了解几种数据结构的行为才能对它们进行比较,但要了解它们性能差异的原因,一种方法是仔细研究几种数据结构。我建议比较单链表、二叉搜索树和,它们都相对简单,但具有非常不同的特征。想想找一个值、添加一个新值、按顺序查找所有值等所需的工作量


人们推荐了很多关于分析算法/数据结构性能的文章,但真正让我觉得有意义的是学习OCaml。处理复杂的数据结构是ML的强项,当您可以避免使用C语言中的指针和内存管理时,它们的行为会更加清晰。(不过,学习OCaml仅仅是为了理解数据结构几乎肯定是一条漫长的路。))

据我所知,数据结构是任何电子系统内存中可以有效管理的任何数据。很多时候,这是一个内存游戏或更快地访问数据。在内存方面,根据最终产品对公司的成本,在数据管理方面进行了权衡。高效管理告诉我们如何根据最终产品的主要需求最好地访问数据。这是一个非常高层次的解释,但数据结构是一个庞大的主题。大多数面试官都会深入到他们能够在面试中讨论的数据结构中,这取决于他们拥有的时间,即链表和相关主题

现在,根据逻辑构造和访问的方式,这些数据类型可以分为原始数据类型、抽象数据类型和复合数据类型

  • 基本数据结构是所有数据结构的基本构建块,它们有一个连续的内存:boolean、char、int、float、double、string
  • 复合数据结构是由多个基本数据类型组成的数据结构。类、结构、联合、数组/记录
  • 抽象数据类型是一种复合数据类型,可以有效地访问它们,称为算法。根据访问数据的方式,数据结构分为线性和非线性数据类型。链表、堆栈、队列等是线性数据类型。堆、二叉树和哈希表等都是非线性数据类型
我希望这有助于您深入了解。

斯基纳的优秀著作“包含了大量的算法和数据结构库

针对大量的问题,对数据结构和算法进行了描述、比较,并讨论了其实际应用。作者还为实现和原始研究论文提供了参考

如果你能为你要解决的问题寻找最佳的数据结构,这本书放在你的办公桌上会很好。它对面试准备也很有帮助


另一个很好的资源是。

在StackOverflow之前的类似问题中找到了列表:

哈希表-用于快速数据查找-编译器的符号表, 数据库索引、缓存、唯一数据表示

Trie-字典,如在手机上找到的 自动补全和拼写检查

后缀树-大多数字处理器中使用的快速全文搜索

字处理器中的堆栈-撤消\重做操作,表达式求值 在语法分析方面,许多虚拟机(如JVM)都是面向堆栈的

队列-不同实体所在的运输和运营研究 存储并保留以供以后处理,即队列执行 缓冲区的功能

优先级队列-内核中的进程调度

树-解析器、文件系统

基树-IP路由表

BSP树-三维计算机图形学

图-社交网站中的连接/关系、路由 、通信网络、数据组织等

lisp中的堆动态内存分配

这是发帖时的答案