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中的堆动态内存分配 这是发帖时的答案