Six Impossible Thingstechniques are only a small part of writing correct programs; keeping the code simple is usually the key to correctness.Communications of the ACM, 26(12), December 1983 On the other hand, several professional binarySearch(int[] a, int key) { int low = 0; int high = a.length - 1; while (low <= high) { int mid = (low + high) / 2; int midVal = a[mid]; if (midVal < key) low = mid + 1 else if (midVal > key) high = mid mid - 1; else return mid; // key found } return -(low + 1); // key not found. } ai.googleblog.com/2006/06/extra-extra-read-all-about-it-nearly.htmlpublic.nrao.edu/telescopes/vlapublic static int binarySearch(int[]0 码力 | 144 页 | 6.47 MB | 6 月前3
Hello 算法 1.0.0b2 C++版return {}; } 该方法的时间复杂度为 ?(? 2) ,空间复杂度为 ?(1) ,属于时间换空间。本方法时间复杂度较高,在大数据 量下非常耗时。 方法二:辅助哈希表 考虑借助一个哈希表,key 为数组元素、value 为元素索引。循环遍历数组中的每个元素 num ,并执行: 2. 复杂度分析 hello‑algo.com 35 1. 判断数字 target - num 是否在哈希表中,若是则直接返回该两个元素的索引; 间效率与空间效率 对比,与上述栈的结论相同。 ‧ 双向队列的两端都可以添加与删除元素。 82 6. 散列表 6.1. 哈希表 哈希表通过建立「键 key」和「值 value」之间的映射,实现高效的元素查找。具体地,输入一个 key ,在哈 希表中查询并获取 value ,时间复杂度为 ?(1) 。 例如,给定一个包含 ? 个学生的数据库,每个学生有“姓名 name ”和“学号 id /* 添加操作 */ // 在哈希表中添加键值对 (key, value) map[12836] = " 小哈"; map[15937] = " 小啰"; map[16750] = " 小算"; map[13276] = " 小法"; map[10583] = " 小鸭"; /* 查询操作 */ // 向哈希表输入键 key ,得到值 value string name = map[15937];0 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0b1 C++版return {}; } 该方法的时间复杂度为 ?(? 2) ,空间复杂度为 ?(1) ,属于时间换空间。本方法时间复杂度较高,在大数据 量下非常耗时。 方法二:辅助哈希表 考虑借助一个哈希表,key 为数组元素、value 为元素索引。循环遍历数组中的每个元素 num ,并执行: 2. 复杂度分析 hello‑algo.com 35 1. 判断数字 target - num 是否在哈希表中,若是则直接返回该两个元素的索引; 间效率与空间效率 对比,与上述栈的结论相同。 ‧ 双向队列的两端都可以添加与删除元素。 82 6. 散列表 6.1. 哈希表 哈希表通过建立「键 key」和「值 value」之间的映射,实现高效的元素查找。具体地,输入一个 key ,在哈 希表中查询并获取 value ,时间复杂度为 ?(1) 。 例如,给定一个包含 ? 个学生的数据库,每个学生有“姓名 name ”和“学号 id /* 添加操作 */ // 在哈希表中添加键值对 (key, value) map[12836] = " 小哈"; map[15937] = " 小啰"; map[16750] = " 小算"; map[13276] = " 小法"; map[10583] = " 小鸭"; /* 查询操作 */ // 向哈希表输入键 key ,得到值 value string name = map[15937];0 码力 | 187 页 | 14.71 MB | 1 年前3
Techniques to Optimise Multi-threaded Data Building During Game Developmentwall clock time • Systems run in isolation • Read/Write and compress • Developer iteration time 7Key differences between game and data building Game Code Frame centric Minimise frame time - fast frame larger process converting input to output • SpinLock: lock that busy waits rather than sleep • FlatMap: key-value container using sorted array for keys 11Job means indivisible unit of work - run on single thread instrumentation • Need to see whole process and all threads Using Intel’s VTune in this presentation 13Key tool in GameDev - custom or 3rd party - many integrated into engine Used to measure CPU, GPU, etc0 码力 | 99 页 | 2.40 MB | 6 月前3
Hello 算法 1.0.0b4 C++版队列的逻辑,因 此可以实现栈与队列的所有应用,并且更加灵活。 92 6. 散列表 6.1. 哈希表 「哈希表 Hash Table」通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具体而言,我们向哈 希表输入一个 key ,则可以在 ?(1) 时间内获取对应的 value 。 以一个包含 ? 个学生的数据库为例,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入 /* 添加操作 */ // 在哈希表中添加键值对 (key, value) map[12836] = " 小哈"; map[15937] = " 小啰"; map[16750] = " 小算"; map[13276] = " 小法"; map[10583] = " 小鸭"; /* 查询操作 */ // 向哈希表输入键 key ,得到值 value string name = map[15937]; map[15937]; /* 删除操作 */ // 在哈希表中删除键值对 (key, value) map.erase(10583); 哈希表有三种常用遍历方式:遍历键值对、遍历键和遍历值。 // === File: hash_map.cpp === /* 遍历哈希表 */ // 遍历键值对 key->value for (auto kv: map) { cout << kv.first0 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.0.0b5 C++版。 第 6 章 哈希表 hello‑algo.com 110 6.1 哈希表 「哈希表 hash table」,又称「散列表」,其通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具 体而言,我们向哈希表输入一个键 key ,则可以在 ?(1) 时间内获取对应的值 value 。 如图 6‑1 所示,给定 ? 个学生,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入一个 /* 添加操作 */ // 在哈希表中添加键值对 (key, value) map[12836] = " 小哈"; map[15937] = " 小啰"; map[16750] = " 小算"; map[13276] = " 小法"; map[10583] = " 小鸭"; /* 查询操作 */ // 向哈希表输入键 key ,得到值 value string name = map[15937]; map[15937]; /* 删除操作 */ // 在哈希表中删除键值对 (key, value) map.erase(10583); 哈希表有三种常用遍历方式:遍历键值对、遍历键和遍历值。 // === File: hash_map.cpp === /* 遍历哈希表 */ // 遍历键值对 key->value for (auto kv: map) { cout << kv.first0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.1.0 C++ 版标图书。 第 6 章 哈希表 hello‑algo.com 115 6.1 哈希表 哈希表(hash table),又称散列表,它通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具体而 言,我们向哈希表中输入一个键 key ,则可以在 ?(1) 时间内获取对应的值 value 。 如图 6‑1 所示,给定 ? 个学生,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入一个 /* 添加操作 */ // 在哈希表中添加键值对 (key, value) map[12836] = " 小哈"; map[15937] = " 小啰"; map[16750] = " 小算"; map[13276] = " 小法"; map[10583] = " 小鸭"; /* 查询操作 */ // 向哈希表中输入键 key ,得到值 value string name = map[15937]; map[15937]; /* 删除操作 */ // 在哈希表中删除键值对 (key, value) map.erase(10583); 哈希表有三种常用的遍历方式:遍历键值对、遍历键和遍历值。示例代码如下: // === File: hash_map.cpp === /* 遍历哈希表 */ // 遍历键值对 key->value for (auto kv: map) { cout <<0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 C++版。 第 6 章 哈希表 hello‑algo.com 115 6.1 哈希表 「哈希表 hash table」,又称「散列表」,它通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具 体而言,我们向哈希表中输入一个键 key ,则可以在 ?(1) 时间内获取对应的值 value 。 如图 6‑1 所示,给定 ? 个学生,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入一个 /* 添加操作 */ // 在哈希表中添加键值对 (key, value) map[12836] = " 小哈"; map[15937] = " 小啰"; map[16750] = " 小算"; map[13276] = " 小法"; map[10583] = " 小鸭"; /* 查询操作 */ // 向哈希表中输入键 key ,得到值 value string name = map[15937]; map[15937]; /* 删除操作 */ // 在哈希表中删除键值对 (key, value) map.erase(10583); 哈希表有三种常用的遍历方式:遍历键值对、遍历键和遍历值。示例代码如下: // === File: hash_map.cpp === /* 遍历哈希表 */ // 遍历键值对 key->value for (auto kv: map) { cout <<0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版第 6 章 哈希表 www.hello‑algo.com 115 6.1 哈希表 哈希表(hash table),又称散列表,它通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具体而 言,我们向哈希表中输入一个键 key ,则可以在 ?(1) 时间内获取对应的值 value 。 如图 6‑1 所示,给定 ? 个学生,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入一个 /* 添加操作 */ // 在哈希表中添加键值对 (key, value) map[12836] = " 小哈"; map[15937] = " 小啰"; map[16750] = " 小算"; map[13276] = " 小法"; map[10583] = " 小鸭"; /* 查询操作 */ // 向哈希表中输入键 key ,得到值 value string name = map[15937]; map[15937]; /* 删除操作 */ // 在哈希表中删除键值对 (key, value) map.erase(10583); 哈希表有三种常用的遍历方式:遍历键值对、遍历键和遍历值。示例代码如下: // === File: hash_map.cpp === /* 遍历哈希表 */ // 遍历键值对 key->value for (auto kv: map) { cout <<0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 C++ 版第 6 章 雜湊表 www.hello‑algo.com 115 6.1 雜湊表 雜湊表(hash table),又稱散列表,它透過建立鍵 key 與值 value 之間的對映,實現高效的元素查詢。具體而 言,我們向雜湊表中輸入一個鍵 key ,則可以在 ?(1) 時間內獲取對應的值 value 。 如圖 6‑1 所示,給定 ? 個學生,每個學生都有“姓名”和“學號”兩項資料。假如我們希望實現“輸入一個 /* 新增操作 */ // 在雜湊表中新增鍵值對 (key, value) map[12836] = " 小哈"; map[15937] = " 小囉"; map[16750] = " 小算"; map[13276] = " 小法"; map[10583] = " 小鴨"; /* 查詢操作 */ // 向雜湊表中輸入鍵 key ,得到值 value string name = map[15937]; map[15937]; /* 刪除操作 */ // 在雜湊表中刪除鍵值對 (key, value) map.erase(10583); 雜湊表有三種常用的走訪方式:走訪鍵值對、走訪鍵和走訪值。示例程式碼如下: // === File: hash_map.cpp === /* 走訪雜湊表 */ // 走訪鍵值對 key->value for (auto kv: map) { cout <<0 码力 | 379 页 | 18.79 MB | 10 月前3
共 189 条
- 1
- 2
- 3
- 4
- 5
- 6
- 19













