Hello 算法 1.2.0 简体中文 TypeScript 版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 10.5 重识搜索算法 . . . 时间效率:算法运行时间的长短。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出错误。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧0 码力 | 383 页 | 18.49 MB | 10 月前3
Hello 算法 1.1.0 TypeScript版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出错误。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧0 码力 | 383 页 | 18.49 MB | 1 年前3
Hello 算法 1.0.0b5 TypeScript 版10.3 二分查找边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 10.4 哈希优化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.5 重识搜索算法 . . . 时间效率:算法运行速度的快慢。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样我们才能将各种算法进行对比,从而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出报错。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为「尾递归 tail recursion」。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。0 码力 | 378 页 | 30.70 MB | 1 年前3
Hello 算法 1.0.0b1 TypeScript 版时间效率,即算法的运行速度的快慢。 ‧ 空间效率,即算法占用的内存空间大小。 数据结构与算法追求“运行速度快、占用内存少”,而如何去评价算法效率则是非常重要的问题,因为只有知 道如何评价算法,才能去做算法之间的对比分析,以及优化算法设计。 2.1.2. 效率评估方法 实际测试 假设我们现在有算法 A 和 算法 B ,都能够解决同一问题,现在需要对比两个算法之间的效率。我们能够想到 的最直接的方式,就是找一台计算机, ,即对应字符串长度为 log10 ? ,因 此空间复杂度为 ?(log10 ?) = ?(log ?) 。 2.4. 权衡时间与空间 理想情况下,我们希望算法的时间复杂度和空间复杂度都能够达到最优,而实际上,同时优化时间复杂度和空 间复杂度是非常困难的。 2. 复杂度分析 hello‑algo.com 34 降低时间复杂度,往往是以提升空间复杂度为代价的,反之亦然。我们把牺牲内存空间来提升算法运行速度的 hello‑algo.com 86 为了缓解哈希冲突,一方面,我们可以通过哈希表扩容来减小冲突概率。极端情况下,当输入空间和输出空间 大小相等时,哈希表就等价于数组了,可谓“大力出奇迹”。 另一方面,考虑通过优化哈希表的表示方式以缓解哈希冲突,常见的方法有「链式地址」和「开放寻址」。 6.2.1. 哈希表扩容 「负载因子 Load Factor」定义为 哈希表中元素数量除以桶槽数量(即数组大小),代表哈希冲突的严重程度。0 码力 | 186 页 | 14.71 MB | 1 年前3
TypeScript 4.0 使用手册
start 和 npm run test ,这 样你就可以在预览的同时进行测试。 在使用 npm run start 运行工程的时候,我们并没有生成一个优化过的版本。 通常我们想给用户一 个运行的尽可能快并在体积上尽可能小的代码。 像压缩这样的优化方法可以做到这一点,但是总是要 耗费更多的时间。 我们把这样的构建版本称做“生产环境”版本(与开发版本相对)。 要执行生产环境的构建,可以运行如下命令: 要执行生产环境的构建,可以运行如下命令: 运行工程 测试工程 生成生产环境的构建版本 React - 60 - 本文档使用 书栈网 · BookStack.CN 构建 1. npm run build 这会相应地创建优化过的JS和CSS文件, ./build/static/js 和 ./build/static/css 。 大多数情况下你不需要生成生产环境的构建版本, 但它可以帮助你衡量应用最终版本的体积大小。 import id = require("...") 语句可以让我们访问模块导出的类型。 模块加载 器会被动态调用(通过 require ),就像下面 if 代码块里那样。 它利用了省略引用的优化,所 以模块只在被需要时加载。 为了让这个模块工作,一定要注意 import 定义的标识符只能在表示类 型处使用(不能在会转换成JavaScript的地方)。 为了确保类型安全性,我们可以使用0 码力 | 683 页 | 6.27 MB | 1 年前3
TypeScript Handbook(中文版)
start 运行工程的时候,我们并没有生成一个优化过的版本。 通 常我们想给用户一个运行的尽可能快并在体积上尽可能小的代码。 像压缩这样的优 化方法可以做到这一点,但是总是要耗费更多的时间。 我们把这样的构建版本称 做“生产环境”版本(与开发版本相对)。 要执行生产环境的构建,可以运行如下命令: npm run build 这会相应地创建优化过的JS和CSS文 件, ./build/static/js 102 TypeScript 2.4 TypeScript 2.4围绕着泛型的推断方式引入了一些很棒的改变。 返回类型作为推断目标 其一,TypeScript能够推断调用的返回值类型。 这可以优化你的体验和方便捕获错 误。 如下所示: function arrayMap(f: (x: T) => U): (a: T[]) => U[] { return a => a UIElement().animate({ deltaX: 100, deltaY: 100, easing: "ease-inout" 更好的联合/交叉类型接口 TypeScript 1.8 优化了源类型和目标类型都是联合或者交叉类型的情况下的类型推 导. 举例来说, 当从 string | string[] 推导到 string | T 时, 我们将类型拆 解为 string[] 0 码力 | 557 页 | 7.48 MB | 1 年前3
TypeScript的发展历程●渐进定型: Flow Type CoffeeScript ●纯语法糖,动态类型 ●上手简单 ●工具不良 ●与新标准有冲突 BuckleScript ●脱胎于OCaml ●类型系统强大 ●编译高度优化 ●语义语法疏远,上手难* Flow Type ●JS+类型标注 ●工具相对完善 ●上手容易 ●与TS设计相似* 比较 类型系统 难度 工具链 CoffeeScript 动态 低 差 BuckleScript0 码力 | 64 页 | 6.17 MB | 1 年前3
共 7 条
- 1













