 Qcon北京2018-《从C#看开放对编程语言发展的影响》-Mads+Torgersen0 码力 | 41 页 | 4.39 MB | 1 年前3 Qcon北京2018-《从C#看开放对编程语言发展的影响》-Mads+Torgersen0 码力 | 41 页 | 4.39 MB | 1 年前3
 Hello 算法 1.1.0 C#版字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数据结构之间有什么联系呢?我们知道,数据结构是在计算机中组织与存储数据的方 式。这句话的主语是“结构”而非“数据”。 如果想表示“一排数字”,我们自然会想到使用数 以采用以下策略。 1. 改良哈希表数据结构,使得哈希表可以在出现哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。 6.2.1 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。链式地址(separate chaining)将单个元素转换为链表,将键 值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 很差。此时可以将链表转换为“AVL 树”或“红黑树”,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2 开放寻址 开放寻址(open addressing)不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式主 要包括线性探测、平方探测和多次哈希等。 下面以线性探测为例,介绍开放寻址哈希表的工作机制。 1. 线性探测 线性探测采用固定步长的线性搜索来进行探测,其操作方法与普通哈希表有所不同。0 码力 | 378 页 | 18.47 MB | 1 年前3 Hello 算法 1.1.0 C#版字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数据结构之间有什么联系呢?我们知道,数据结构是在计算机中组织与存储数据的方 式。这句话的主语是“结构”而非“数据”。 如果想表示“一排数字”,我们自然会想到使用数 以采用以下策略。 1. 改良哈希表数据结构,使得哈希表可以在出现哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。 6.2.1 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。链式地址(separate chaining)将单个元素转换为链表,将键 值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 很差。此时可以将链表转换为“AVL 树”或“红黑树”,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2 开放寻址 开放寻址(open addressing)不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式主 要包括线性探测、平方探测和多次哈希等。 下面以线性探测为例,介绍开放寻址哈希表的工作机制。 1. 线性探测 线性探测采用固定步长的线性搜索来进行探测,其操作方法与普通哈希表有所不同。0 码力 | 378 页 | 18.47 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 C# 版字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数据结构之间有什么联系呢?我们知道,数据结构是在计算机中组织与存储数据的方 式。这句话的主语是“结构”而非“数据”。 如果想表示“一排数字”,我们自然会想到使用数 以采用以下策略。 1. 改良哈希表数据结构,使得哈希表可以在出现哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。 6.2.1 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。链式地址(separate chaining)将单个元素转换为链表,将键 值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 很差。此时可以将链表转换为“AVL 树”或“红黑树”,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2 开放寻址 开放寻址(open addressing)不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式主 要包括线性探测、平方探测和多次哈希等。 下面以线性探测为例,介绍开放寻址哈希表的工作机制。 1. 线性探测 线性探测采用固定步长的线性搜索来进行探测,其操作方法与普通哈希表有所不同。0 码力 | 379 页 | 18.48 MB | 10 月前3 Hello 算法 1.2.0 简体中文 C# 版字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数据结构之间有什么联系呢?我们知道,数据结构是在计算机中组织与存储数据的方 式。这句话的主语是“结构”而非“数据”。 如果想表示“一排数字”,我们自然会想到使用数 以采用以下策略。 1. 改良哈希表数据结构,使得哈希表可以在出现哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。 6.2.1 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。链式地址(separate chaining)将单个元素转换为链表,将键 值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 很差。此时可以将链表转换为“AVL 树”或“红黑树”,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2 开放寻址 开放寻址(open addressing)不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式主 要包括线性探测、平方探测和多次哈希等。 下面以线性探测为例,介绍开放寻址哈希表的工作机制。 1. 线性探测 线性探测采用固定步长的线性搜索来进行探测,其操作方法与普通哈希表有所不同。0 码力 | 379 页 | 18.48 MB | 10 月前3
 Hello 算法 1.0.0 C#版字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数据结构之间有什么联系呢?我们知道,数据结构是在计算机中组织与存储数据的方 式。这句话的主语是“结构”而非“数据”。 如果想表示“一排数字”,我们自然会想到使用数 以采用以下策略。 1. 改良哈希表数据结构,使得哈希表可以在出现哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。 6.2.1 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。「链式地址 separate chaining」将单个元素转换为链表,将 键值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 很差。此时可以将链表转换为“AVL 树”或“红黑树”,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2 开放寻址 「开放寻址 open addressing」不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式主 要包括线性探测、平方探测和多次哈希等。 下面以线性探测为例,介绍开放寻址哈希表的工作机制。 1. 线性探测 线性探测采用固定步长的线性搜索来进行探测,其操作方法与普通哈希表有所不同。0 码力 | 376 页 | 17.59 MB | 1 年前3 Hello 算法 1.0.0 C#版字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数据结构之间有什么联系呢?我们知道,数据结构是在计算机中组织与存储数据的方 式。这句话的主语是“结构”而非“数据”。 如果想表示“一排数字”,我们自然会想到使用数 以采用以下策略。 1. 改良哈希表数据结构,使得哈希表可以在出现哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。 6.2.1 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。「链式地址 separate chaining」将单个元素转换为链表,将 键值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 很差。此时可以将链表转换为“AVL 树”或“红黑树”,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2 开放寻址 「开放寻址 open addressing」不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式主 要包括线性探测、平方探测和多次哈希等。 下面以线性探测为例,介绍开放寻址哈希表的工作机制。 1. 线性探测 线性探测采用固定步长的线性搜索来进行探测,其操作方法与普通哈希表有所不同。0 码力 | 376 页 | 17.59 MB | 1 年前3
 Hello 算法 1.0.0b5 C#版字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常被存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数据结构之间有什么联系呢?我们知道,数据结构是在计算机中组织与存储数据的方 式。它的主语是“结构”而非“数据”。 如果想要表示“一排数字”,我们自然会想到使用数 以采用以下策略。 1. 改良哈希表数据结构,使得哈希表可以在存在哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。 6.2.1 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。「链式地址 separate chaining」将单个元素转换为链表,将 键值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 } } 值得注意的是,当链表很长时,查询效率 ?(?) 很差。此时可以将链表转换为“AVL 树”或“红黑树”,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2 开放寻址 「开放寻址 open addressing」不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式主 要包括线性探测、平方探测、多次哈希等。 1. 线性探测 线性探测采用固定步长的线0 码力 | 376 页 | 30.69 MB | 1 年前3 Hello 算法 1.0.0b5 C#版字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常被存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数据结构之间有什么联系呢?我们知道,数据结构是在计算机中组织与存储数据的方 式。它的主语是“结构”而非“数据”。 如果想要表示“一排数字”,我们自然会想到使用数 以采用以下策略。 1. 改良哈希表数据结构,使得哈希表可以在存在哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。 6.2.1 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。「链式地址 separate chaining」将单个元素转换为链表,将 键值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。图 } } 值得注意的是,当链表很长时,查询效率 ?(?) 很差。此时可以将链表转换为“AVL 树”或“红黑树”,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2 开放寻址 「开放寻址 open addressing」不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式主 要包括线性探测、平方探测、多次哈希等。 1. 线性探测 线性探测采用固定步长的线0 码力 | 376 页 | 30.69 MB | 1 年前3
 Hello 算法 1.0.0b4 C#版0 布尔 bool 1 byte false true false � 字符的占用空间大小取决于编程语言采用的字符编码方法,详见「字符编码」章节。 现代计算机 CPU 通常将 1 字节作为最小寻址内存单元。因此,即使表示布尔量仅需 1 位(0 或 1),它在内存中通常被存储为 1 字节。 那么,基本数据类型与数据结构之间有什么联系与区别呢?我们知道,数据结构是在计算机中组织与存储数 据 的数据搬运与哈希值计算。为了提升效率,我们切换一下思路: 1. 改良哈希表数据结构,使得哈希表可以在存在哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括链式地址和开放寻址。 6.2.1. 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。「链式地址 Separate Chaining」将单个元素转换为链表,将 键值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。 } } } � 当链表很长时,查询效率 ?(?) 很差,此时可以将链表转换为「AVL 树」或「红黑树」,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2. 开放寻址 「开放寻址 Open Addressing」不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式 主要包括线性探测、平方探测、多次哈希等。 线性探测 线性探测采用固定步长的线性查找来进行探测,对应的哈希表操作方法为:0 码力 | 341 页 | 27.39 MB | 1 年前3 Hello 算法 1.0.0b4 C#版0 布尔 bool 1 byte false true false � 字符的占用空间大小取决于编程语言采用的字符编码方法,详见「字符编码」章节。 现代计算机 CPU 通常将 1 字节作为最小寻址内存单元。因此,即使表示布尔量仅需 1 位(0 或 1),它在内存中通常被存储为 1 字节。 那么,基本数据类型与数据结构之间有什么联系与区别呢?我们知道,数据结构是在计算机中组织与存储数 据 的数据搬运与哈希值计算。为了提升效率,我们切换一下思路: 1. 改良哈希表数据结构,使得哈希表可以在存在哈希冲突时正常工作。 2. 仅在必要时,即当哈希冲突比较严重时,才执行扩容操作。 哈希表的结构改良方法主要包括链式地址和开放寻址。 6.2.1. 链式地址 在原始哈希表中,每个桶仅能存储一个键值对。「链式地址 Separate Chaining」将单个元素转换为链表,将 键值对作为链表节点,将所有发生冲突的键值对都存储在同一链表中。 } } } � 当链表很长时,查询效率 ?(?) 很差,此时可以将链表转换为「AVL 树」或「红黑树」,从而 将查询操作的时间复杂度优化至 ?(log ?) 。 6.2.2. 开放寻址 「开放寻址 Open Addressing」不引入额外的数据结构,而是通过“多次探测”来处理哈希冲突,探测方式 主要包括线性探测、平方探测、多次哈希等。 线性探测 线性探测采用固定步长的线性查找来进行探测,对应的哈希表操作方法为:0 码力 | 341 页 | 27.39 MB | 1 年前3
 Hello 算法 1.2.0 繁体中文 C# 版雜湊函式 hash collision 哈希冲突 雜湊衝突 load factor 负载因子 負載因子 separate chaining 链式地址 鏈結位址 open addressing 开放寻址 開放定址 linear probing 线性探测 線性探查 lazy deletion 懒删除 懶刪除 binary tree 二叉树 二元樹 tree node 树节点 樹節點 left‑child0 码力 | 379 页 | 18.79 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 C# 版雜湊函式 hash collision 哈希冲突 雜湊衝突 load factor 负载因子 負載因子 separate chaining 链式地址 鏈結位址 open addressing 开放寻址 開放定址 linear probing 线性探测 線性探查 lazy deletion 懒删除 懶刪除 binary tree 二叉树 二元樹 tree node 树节点 樹節點 left‑child0 码力 | 379 页 | 18.79 MB | 10 月前3
共 7 条
- 1













