Hello 算法 1.0.0b1 TypeScript 版0; 5.1.2. 栈的实现 为了更加清晰地了解栈的运行机制,接下来我们来自己动手实现一个栈类。 栈规定元素是先入后出的,因此我们只能在栈顶添加或删除元素。然而,数组或链表都可以在任意位置添加删 除元素,因此 栈可被看作是一种受约束的数组或链表。换言之,我们可以“屏蔽”数组或链表的部分无关操 作,使之对外的表现逻辑符合栈的规定即可。 基于链表的实现 使用「链表」实现栈时,将链表的头结点看作栈顶,将尾结点看作栈底。 数组、链表 输入数据要求 无 有序 无 平均时间复杂度查找 / 插入 / 删 除 ?(?) / ?(1) / ?(?) ?(log ?) / ?(?) / ?(?) ?(1) / ?(1) / ?(1) 10. 查找算法 hello‑algo.com 159 线性查找 二分查找 哈希查找 最差时间复杂度查找 / 插入 / 删 除 ?(?) / ?(1) / ?(?) ?(log ?) / ?( Algorithm」使得列表中的所有元素按照从小到大的顺序排列。 ‧ 待排序的列表的 元素类型 可以是整数、浮点数、字符、或字符串; ‧ 排序算法可以根据需要设定 判断规则,例如数字大小、字符 ASCII 码顺序、自定义规则; Figure 11‑1. 排序中不同的元素类型和判断规则 11.1.1. 评价维度 排序算法主要可根据 稳定性、就地性、自适应性、比较类 来分类。 稳定性 ‧「稳定排序」在完成排序后,不改变0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.1.0 TypeScript版展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 1 + (−2) → 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s 二进制数到字符的转换。 3.4.1 ASCII 字符集 ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。0 码力 | 383 页 | 18.49 MB | 1 年前3
Hello 算法 1.0.0b5 TypeScript 版ASCII 字符集 「ASCII 码」是最早出现的字符集,全称为“美国标准信息交换代码”。它使用 7 位二进制数(即一个字节的 低 7 位)表示一个字符,最多能够表示 128 个不同的字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、 数字 0 ~ 9、一些标点符号,以及一些控制字符(如换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 3.4.2 GBK 字符集 后来人们发现,EASCII 码仍然无法满足许多语言的字符数量要求。比如汉字大约有近十万个,光日常使用 的就有几千个。中国国家标准总局于 1980 年发布了「GB2312」字符集,其收录了 字符集中,常用的字符占用 2 字 节,有些生僻的字符占 3 字节甚至 4 字节。 Unicode 是一种字符集标准,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在同一个文本中时,系统 如何解析字符?例如给定一个长度为 2 字节的编码,系统如何确认它是一个 2 字节的字符还是两个 1 字节的 字符?0 码力 | 378 页 | 30.70 MB | 1 年前3
Hello 算法 1.2.0 简体中文 TypeScript 版展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 1 + (−2) → 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s 二进制数到字符的转换。 3.4.1 ASCII 字符集 ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。0 码力 | 383 页 | 18.49 MB | 10 月前3
TypeScript 4.0 使用手册
34. .pipe(gulp.dest('dist')); 35. })); 我们需要设置TypeScript目标为ES2015。 Babel稍后会从TypeScript生成的ES2015代码中生成 ES5。 修改 tsconfig.json : 1. { 2. "files": [ 3. "src/main.ts" 4. ], 5. "compilerOptions": ts ,它是Typings帮我们创建的。 这个文件会自动地包含所有安装 的依赖。 你可能会对 typings 目录下的 browser.d.ts 文件感到好奇,尤其因为我们将在浏览器里运行代 码。 其实原因是这样的,当目标为浏览器的时候,一些包会生成不同的版本。 通常来讲,这些情况很 少发生并且在这里我们不会遇到这种情况,所以我们可以忽略 browser.d.ts 。 你可以在这里查看更多关于 json 包含了依赖,还有一些命令的快捷方式,如测试命令,预览命令和发布应用的命 令。 public 包含了静态资源如HTML页面或图片。除了 index.html 文件外,其它的文件都可以删 除。 src 包含了TypeScript和CSS源码。 index.tsx 是强制使用的入口文件。 通过下面的方式即可轻松地运行这个工程。 1. npm run start 它会执行0 码力 | 683 页 | 6.27 MB | 1 年前3
Programming TypeScript是去掉了空白、注释和缩进用的制表符或空格之后的数据结构。 编译器把 AST 转换成一种字节码(bytecode) 的低(底?)层表示。 字节码再传给运行时程序计算,最终得到结果。 ● 综上 1. 把程序解析成AST 2. 把AST编译成字节码 3. 运行时计算字节码 TS 的特殊之处在于,它不直接编译成字节码,而是编译成JS代码 ● TS 1. TS 源码 => TS AST 2. 类型检查器检查AST 类型检查器检查AST 3. TS AST => JS 源码 ● JS 4. JS 源码 => JS AST 5. AST => 字节码 6. 运行时计算字节码 在这个过程中,第1-2 步骤中使用程序的类型,第三步不使用。就是说 TS TS 编译成 JS 时,不会考 类型。 这意味着,程序中的类型对程序生成的输出没有任何影响,类型只在类型检查这一步使用。 类型系统 ● 一般的有两种类型系统0 码力 | 3 页 | 202.08 KB | 1 年前3
TypeScript Handbook(中文版)
greeter.ts TypeScript Handbook(中文版) 9 5分钟了解TypeScript 输出结果为一个 greeter.js 文件,它包含了和输入文件中相同的JavsScript代 码。 一切准备就绪,我们可以运行这个使用TypeScript写的JavaScript应用了! 接下来让我们看看TypeScript工具带来的高级功能。 给 person 函数的参数添加 : string TypeScript Handbook(中文版) 22 ASP.NET Core 在 wwwroot 中添加一个新建项 index.html 。 在 index.html 中写入以下代 码: 注意,我们为Broswerify指定了 debug: true 。 这会让 tsify 在输出文件里生 成 source maps 。 source maps 允许我们在浏览器中直接调试TypeScript源 码,而不是在合并后的JavaScript文件上调试。 你要打开调试器并在 main.ts 里 打一个断点,看看 source maps 是否能工作。 当你刷新页面时,代码会停在断点 处,从而你就能够调试0 码力 | 557 页 | 7.48 MB | 1 年前3
共 7 条
- 1













