Hello 算法 1.0.0b1 JavaScript版大块连续的内存空间,则要求选取的数据 结构必须能够存储在离散的内存空间内。 3. 数据结构简介 hello‑algo.com 41 3.2. 数据结构分类 数据结构主要可根据「逻辑结构」和「物理结构」两种角度进行分类。 3.2.1. 逻辑结构:线性与非线性 「逻辑结构」反映了数据之间的逻辑关系。数组和链表的数据按照顺序依次排列,反映了数据间的线性关系;树 从顶至底按层级排列,反映了祖 非线性数据结构:树、图、堆、哈希表; Figure 3‑3. 线性与非线性数据结构 3.2.2. 物理结构:连续与离散 � 若感到阅读困难,建议先看完下个章节「数组与链表」,再回过头来理解物理结构的含义。 「物理结构」反映了数据在计算机内存中的存储方式。从本质上看,分别是 数组的连续空间存储 和 链表的离散 空间存储。物理结构从底层上决定了数据的访问、更新、增删等操作方法,在时间效率和空间效率方面呈现出 址来访问数据的。 ‧ 数据结构主要可以从逻辑结构和物理结构两个角度进行分类。逻辑结构反映了数据中元素之间的逻辑关 系,物理结构反映了数据在计算机内存中的存储形式。 ‧ 常见的逻辑结构有线性、树状、网状等。我们一般根据逻辑结构将数据结构分为线性(数组、链表、栈、 队列)和非线性(树、图、堆)两种。根据实现方式的不同,哈希表可能是线性或非线性。 ‧ 物理结构主要有两种,分别是连续空间存储(数组)和离0 码力 | 185 页 | 14.70 MB | 1 年前3
Hello 算法 1.1.0 JavaScript版它为数据的有序组织提供了蓝图,算法得以在此基础上生动起来。 第 3 章 数据结构 hello‑algo.com 52 3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定顺序排列,体现了数据之间的线 性关系;而在树中,数据从顶部向 非线性数据结构可以进一步划分为树形结构和网状结构。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 图 3‑1 线性数据结构与非线性数据结构 3.1.2 物理结构:连续与分散 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方 块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余空闲 内存;如果缺少连续大块的内存空间,那么所选用的数据结构必须能够存储在分散的内存空间内。 如图 3‑3 所示,物理结构反映了数据在计算机内存中的存储方0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版基础上生动起来。 第 3 章 数据结构 www.hello‑algo.com 52 3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定顺序排列,体现了数据之间的线 性关系;而在树中,数据从顶部向 非线性数据结构可以进一步划分为树形结构和网状结构。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 图 3‑1 线性数据结构与非线性数据结构 3.1.2 物理结构:连续与分散 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方 块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则通常无法被其他程序同时使用了。因此在数 据结构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余 空闲内存;如果缺少连续大块的内存空间,那么所选用的数据结构必须能够存储在分散的内存空间内。 如图 3‑3 所示,物理结构反映了数据在计算机内存中的存储0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0 JavaScript版它为数据的有序组织提供了蓝图,算法得以在此基础上生动起来。 第 3 章 数据结构 hello‑algo.com 52 3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定顺序排列,体现了数据之间的线 性关系;而在树中,数据从顶部向 非线性数据结构可以进一步划分为树形结构和网状结构。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 图 3‑1 线性数据结构与非线性数据结构 3.1.2 物理结构:连续与分散 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方 块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大 及地址空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余空闲 内存;如果缺少连续大块的内存空间,那么所选用的数据结构必须能够存储在分散的内存空间内。 如图 3‑3 所示,物理结构反映了数据在计算机内存中的存储方0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 JavaScript 版非線性資料結構可以進一步劃分為樹形結構和網狀結構。 ‧ 樹形結構:樹、堆積、雜湊表,元素之間是一對多的關係。 ‧ 網狀結構:圖,元素之間是多對多的關係。 圖 3‑1 線性資料結構與非線性資料結構 3.1.2 物理結構:連續與分散 當演算法程式執行時,正在處理的資料主要儲存在記憶體中。圖 3‑2 展示了一個計算機記憶體條,其中每個 黑色方塊都包含一塊記憶體空間。我們可以將記憶體想象成一個巨大的 Excel 位址空間、記憶體管理、快取機制、虛擬記憶體和物理記憶體等概念。 記憶體是所有程式的共享資源,當某塊記憶體被某個程式佔用時,則通常無法被其他程式同時使用了。因此 在資料結構與演算法的設計中,記憶體資源是一個重要的考慮因素。比如,演算法所佔用的記憶體峰值不應 超過系統剩餘空閒記憶體;如果缺少連續大塊的記憶體空間,那麼所選用的資料結構必須能夠儲存在分散的 記憶體空間內。 如圖 3‑3 所示,物理結構反映了資料在計算機 所示,物理結構反映了資料在計算機記憶體中的儲存方式,可分為連續空間儲存(陣列)和分散空 間儲存(鏈結串列)。物理結構從底層決定了資料的訪問、更新、增刪等操作方法,兩種物理結構在時間效率 和空間效率方面呈現出互補的特點。 第 3 章 資料結構 www.hello‑algo.com 54 圖 3‑3 連續空間儲存與分散空間儲存 值得說明的是,所有資料結構都是基於陣列、鏈結串列或二者的組合實現的。例如,堆疊和佇列既可以使用0 码力 | 379 页 | 18.78 MB | 10 月前3
2019-2021 美团技术年货 前端篇在执行相关命令(即 hmap print)后,我们可以发现这些 hmap 里保存的信息结构 大致如下 , 类似于一个 Key-Value 的形式,Key 值是头文件的名称,Value 是头文 件的实际物理路径: 需要注意,映射表的键值内容会随着使用场景产生不同的变化,例如头文件引用是在 "..." 的形式下,还是 <...> 的形式下,又或是在 Build Phase 里 Header 的配置 PrivateHeader 目录。 ● 理解 Xcode Phases 构建系统中,Public 代表公开头文件,Private 代表不 需要使用者感知,但物理存在的文件, 而 Project 代表不应让使用者感知,且 物理不存在的文件。 ● 不使用 Framework 的情况下且以 #import 这种标准方式引入头 文件时,在 CocoaPods 上使用 hmap 不容易做全页面的动态化,它比较适合做局部的动态化方案。核心页面的复杂度在于 业务本身复杂,最重要的是核心页面往往会有多个垂直业务团队共同的开发维护,大 家各自有重点关注的模块,做全页面的动态化,无法做到有效的物理隔离。 而对于非核心页面,业务功能和交互相对简单,组织关系也较为确定,更适合做标准 的 MRN 和 Titans 容器化。所以我们的策略是核心页面做到支撑页面模块级别的业 务动态和复用,非核心0 码力 | 738 页 | 50.29 MB | 1 年前3
Hello 算法 1.0.0b5 JavaScript版它为数据的有序组织提供了蓝图,使算法得以在此基础上生动起来。 第 3 章 数据结构 hello‑algo.com 49 3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照顺序依次排列,体现了数据之间的线 性关系;而在树中,数据从顶部向 。 ‧ 线性结构:数组、链表、队列、栈、哈希表,元素之间是一对一的顺序关系。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 3.1.2 物理结构:连续与离散 在计算机中,内存和硬盘是两种主要的存储硬件设备。硬盘主要用于长期存储数据,容量较大(通常可达到 TB 级别)、速度较慢。内存用于运行程序时暂存数据,速度较快,但容量较小(通常为 占用的内存峰值不应超过系统剩余空闲 内存;如果缺少连续大块的内存空间,那么所选用的数据结构必须能够存储在离散的内存空间内。 如图 3‑3 所示,物理结构反映了数据在计算机内存中的存储方式,可分为连续空间存储(数组)和离散空间 存储(链表)。物理结构从底层决定了数据的访问、更新、增删等操作方法,同时在时间效率和空间效率方面 呈现出互补的特点。 第 3 章 数据结构 hello‑algo.com0 码力 | 375 页 | 30.68 MB | 1 年前3
共 7 条
- 1













