Hello 算法 1.1.0 JavaScript版大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通 过编程来实现它们。在此基础上,本书致力于揭示算法在复杂世界中的生动体现,展现算法之美。希望本书 10.1 二分查找 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 10.2 二分查找插入点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.3 二分查找边界 . . 位于 ? 之后,所以排除字典前半部分,查找范围缩小到后半部分。 3. 不断重复步骤 1. 和 步骤 2. ,直至找到拼音首字母为 ? 的页码为止。 图 1‑1 查字典步骤 查字典这个小学生必备技能,实际上就是著名的“二分查找”算法。从数据结构的角度,我们可以把字典视 为一个已排序的“数组”;从算法的角度,我们可以将上述查字典的一系列操作看作“二分查找”。 例二:整理扑克。我们在打牌时,每0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通 过编程来实现它们。在此基础上,本书致力于揭示算法在复杂世界中的生动体现,展现算法之美。希望本书 10.1 二分查找 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 10.2 二分查找插入点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.3 二分查找边界 . . 位于 ? 之后,所以排除字典前半部分,查找范围缩小到后半部分。 3. 不断重复步骤 1. 和步骤 2. ,直至找到拼音首字母为 ? 的页码为止。 图 1‑1 查字典步骤 查字典这个小学生必备技能,实际上就是著名的“二分查找”算法。从数据结构的角度,我们可以把字典视 为一个已排序的“数组”;从算法的角度,我们可以将上述查字典的一系列操作看作“二分查找”。 例二:整理扑克。我们在打牌时,每0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0 JavaScript版10.1 二分查找 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 10.2 二分查找插入点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 10.3 二分查找边界 . . 位于 ? 之后,所以排除字典前半部分,查找范围缩小到后半部分。 3. 不断重复步骤 1. 和 步骤 2. ,直至找到拼音首字母为 ? 的页码为止。 图 1‑1 查字典步骤 查字典这个小学生必备技能,实际上就是著名的“二分查找”算法。从数据结构的角度,我们可以把字典视 为一个已排序的“数组”;从算法的角度,我们可以将上述查字典的一系列操作看作“二分查找”。 例二:整理扑克。我们在打牌时,每 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 � 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将 引导你迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 「算法 algorithm」是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.0.0b5 JavaScript版10.1 二分查找 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 10.2 二分查找插入点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 10.3 二分查找边界 . . 例一:查阅字典。在字典里,每个汉字都对应一个拼音,而字典是按照拼音字母顺序排列的。假设我们需要 查找一个拼音首字母为 ? 的字,通常会按照图 1‑1 所示的方式实现。 1. 翻开字典约一半的页数,查看该页的首字母是什么,假设首字母为 ? 。 2. 由于在拼音字母表中 ? 位于 ? 之后,所以排除字典前半部分,查找范围缩小到后半部分。 3. 不断重复步骤 1. 和 步骤 2. ,直至找到拼音首字母为 图 1‑1 查字典步骤 第 1 章 初识算法 hello‑algo.com 11 查阅字典这个小学生必备技能,实际上就是著名的二分查找算法。从数据结构的角度,我们可以把字典视为 一个已排序的“数组”;从算法的角度,我们可以将上述查字典的一系列操作看作是“二分查找”。 例二:整理扑克。我们在打牌时,每局都需要整理扑克牌,使其从小到大排列,实现流程如图 1‑2 所示。 1. 将扑克牌划分为“0 码力 | 375 页 | 30.68 MB | 1 年前3
Hello 算法 1.0.0b1 JavaScript版. . . . . . . . . . . . . . . . 150 10. 查找算法 151 10.1. 线性查找 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 10.2. 二分查找 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 10.3. 哈希查找 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 10.4. 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时 空效率、实现方法、示例题目等。 0. 写在前面 hello‑algo.com 2 Figure 0‑1. Hello0 码力 | 185 页 | 14.70 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 JavaScript 版大到一個國家,小 到一個家庭,社會的主要組織形式呈現出“樹”的特徵;冬天的衣服就像“堆疊”,最先穿上的最後才能脫下; 羽毛球筒則如同“佇列”,一端放入、一端取出;字典就像一個“雜湊表”,能夠快速查找目標詞條。 本書旨在透過清晰易懂的動畫圖解與可執行的程式碼範例,使讀者理解演算法和資料結構的核心概念,並能 夠透過程式設計來實現它們。在此基礎上,本書致力於揭示演算法在複雜世界中的生動體現,展現演算法之 205 10.1 二分搜尋 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 10.2 二分搜尋插入點 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.3 二分搜尋邊界 . 和步驟 2. ,直至找到拼音首字母為 ? 的頁碼為止。 圖 1‑1 查字典步驟 查字典這個小學生必備技能,實際上就是著名的“二分搜尋”演算法。從資料結構的角度,我們可以把字典 視為一個已排序的“陣列”;從演算法的角度,我們可以將上述查字典的一系列操作看作“二分搜尋”。 例二:整理撲克。我們在打牌時,每局都需要整理手中的撲克牌,使其從小到大排列,實現流程如圖 1‑2 所 示。 第 1 章0 码力 | 379 页 | 18.78 MB | 10 月前3
廖雪峰JavaScript教程删除DOM 6.3 操作表单 6.4 操作文件 6.5 AJAX 6.6 Promise 6.7 Canvas 7 jQuery 7.1 选择器 7.1.1 层级选择器 7.1.2 查找和过滤 7.2 操作DOM 7.2.1 修改DOM结构 7.3 事件 7.4 动画 7.5 扩展 8 underscore 8.1 Collections 8.2 Arrays 8 直接运行测试 Map 是一组键值对的结构,具有极快的查找速度。 举个例子,假设要根据同学的名字查找对应的成绩,如果用 Array 实现,需要两个 Array : 1. var names = ['Michael', 'Bob', 'Tracy']; 2. var scores = [95, 75, 85]; 给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成 ores取出对应的成 绩,Array越长,耗时越长。 如果用Map实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大, 查找速度都不会变慢。用JavaScript写一个Map如下: 1. var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); 2. m.get('Michael'); //0 码力 | 264 页 | 2.81 MB | 10 月前3
JavaScript 正则表达式迷你书 老姚 - v1.1也不多。 7.1.1. 验证 验证是正则表达式最直接的应用,比如表单验证。 在说验证之前,先要说清楚匹配是什么概念。 所谓匹配,就是看目标字符串里是否有满足匹配的子串。因此,“匹配”的本质就是“查找”。 有没有匹配,是不是匹配上,判断是否的操作,即称为“验证”。 这里举一个例子,来看看如何使用相关 API 进行验证操作的。 比如,判断一个字符串中是否有数字。 使用 search: var 在指定位置插入特定的语法格式,比如代码段前面要插入: [source,javascript]\n---- 此时,我发现我的大部分代码段,都是 var 开头的,并且前面有一空行。此时我打开查找替换功能,查找: (^\r\n)var 替换为: [source,javascript]\n----\nvar 这确实也帮我解决一部分工作。 当然,正则表达式是跟具体语言(比如 JavaScrip boundaries 非单词边界 non-word boundaries 向前查找 lookahead 正向向前查找 positive lookahead 负向向前查找 negative lookahead 向后查找 lookbehind 正向向后查找 positive lookbehind 负向向后查找 negative lookbehind 分组 groups 捕获分组 capturing0 码力 | 89 页 | 3.42 MB | 11 月前3
JavaScript 正则表达式迷你书 老姚 - v1.0也不多。 7.1.1. 验证 验证是正则表达式最直接的应用,比如表单验证。 在说验证之前,先要说清楚匹配是什么概念。 所谓匹配,就是看目标字符串里是否有满足匹配的子串。因此,“匹配”的本质就是“查找”。 有没有匹配,是不是匹配上,判断是否的操作,即称为“验证”。 这里举一个例子,来看看如何使用相关 API 进行验证操作的。 比如,判断一个字符串中是否有数字。 使用 search: var 插入特定的语法格式,比如代码段前面要插入“[ source,javascript]\n----”这样的字符,此时,我发现我的大部分代码段,都是var开头的,并且前面有一 空行。此时我打开查找替换功能,查找“(^\r\n)var”,替换为“[source,javascript]\n----\nvar”。这 确实也帮我解决一部分工作。 当然,正则表达式是跟具体语言(比如JavaScript)无 boundaries 非单词边界 non-word boundaries 向前查找 lookahead 正向向前查找 positive lookahead 负向向前查找 negative lookahead 向后查找 lookbehind 正向向后查找 positive lookbehind 负向向后查找 negative lookbehind 分组 groups 捕获分组 capturing0 码力 | 89 页 | 3.42 MB | 11 月前3
2019-2021 美团技术年货 前端篇IO 操作,进而会产生一些耗 时操作。 ● 编译时间会随着组件数量急剧增长,以美团和大众点评有 400+ 个组件的体量 为参考,全源码打包耗时均在 1 小时以上。 ● 基于路径顺序查找头文件的方式有潜在的风险,例如重名头文件的情况,排在 98 > 2021年美团技术年货 后面的头文件永远无法参与编译。 ● 由于 ${PODS_ROOT}/Headers/Private 路径的存在,让引用其他组件的私 但幸运的是,在后续的探索的过程中,我们发现了为什么 Xcode 的 Header Map 没 有生效,以及为什么它与 CocoaPods 出现了不兼容的情况,虽然它的原理并不复 杂,核心点就是将文件查找和读取等 IO 操作编变成了内存读取操作,但结合实际的 业务场景,我们发现它的收益是十分可观的。 或许这是在提醒我们,要永远对技术保持一颗好奇的心! 其实,利用 Clang Module 技术 结合前面提到的内容,在 AppDelegate 中添加 iAd.h: #import@implementation AppDelegate //... @end 然后编译器会开始查找 iAd/iAd.h 到底是哪个文件且包含何种内容,假设它的内容 如下: /* iAd/iAd.h */ #import #import 0 码力 | 738 页 | 50.29 MB | 1 年前3
共 14 条
- 1
- 2













