Hello 算法 1.2.0 繁体中文 JavaScript 版Hello 演算法 JavaScript 語言版 作者:靳宇棟(@krahets) 程式碼審閱:謝發 (@justin‑tse) Release 1.2.0 2024‑12‑06 序 兩年前,我在力扣上分享了“劍指 Offer”系列題解,受到了許多讀者的鼓勵與支持。在與讀者交流期間,我 最常被問到的一個問題是“如何入門演算法”。漸漸地,我對這個問題產生了濃厚的興趣。 兩眼一抹黑地刷題 付出的寶貴“注意力”,我會竭盡所能,投入最大的“注意力” 來完成本書的創作。 本人自知學疏才淺,書中內容雖然已經過一段時間的打磨,但一定仍有許多錯誤,懇請各位老師與同學批評 指正。 本書中的程式碼附有可一鍵執行的原始檔,託管於 github.com/krahets/hello‑algo 倉庫。 動畫在 PDF 內的展示效果有限,可訪問 www.hello‑algo.com 網頁版以獲得更佳的閱讀體驗。 ——鄧俊輝,清華大學計算機系教授 “如果我當年學資料結構與演算法時有《Hello 演算法》,學起來應該會簡單 10 倍!” ——李沐,亞馬遜資深首席科學家 電腦的出現為世界帶來了巨大的變革,它憑藉高速的運算能力與卓越的可程式化特性,成為執行演算法 與處理資料的理想媒介。無論是電玩遊戲的逼真畫面、自動駕駛的智慧決策,還是 AlphaGo 的精彩棋局、 ChatGPT 的自然互動,這些應用都是演算法在電腦上的精妙演繹。0 码力 | 379 页 | 18.78 MB | 10 月前3
Hello 算法 1.1.0 JavaScript版函数(function)可以被独立执行,所有参数都以显式传递。方法(method)与一个对象关联,被隐式传递给 调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几种常见的编程语言为例来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建结构体(struct) 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 第 2 章 复杂度分析 hello‑algo ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 ‧ C++ 和 Python 既支持过程式编程(函数),也支持面向对象编程(方法)。 Q:图解“常见的空间复杂度类型”反映的是否是占用空间的绝对大小? 不是,该图展示的是空间复杂度,其反映的是增长趋势,而不是占用空间的绝对大小。 假设取 部分名词在简体中文和繁体中文下的叫法不同。 表 16‑1 数据结构与算法的重要名词 English 简体中文 繁体中文 algorithm 算法 演算法 data structure 数据结构 資料結構 code 代码 程式碼 file 文件 檔案 function 函数 函式 method 方法 方法 variable 变量 變數 asymptotic complexity analysis 渐近复杂度分析 漸近複雜度分析0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版函数(function)可以被独立执行,所有参数都以显式传递。方法(method)与一个对象关联,被隐式传递给 调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几种常见的编程语言为例来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建结构体(struct) 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 第 2 章 复杂度分析 www.hello‑algo ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 ‧ C++ 和 Python 既支持过程式编程(函数),也支持面向对象编程(方法)。 Q:图解“常见的空间复杂度类型”反映的是否是占用空间的绝对大小? 不是,该图展示的是空间复杂度,其反映的是增长趋势,而不是占用空间的绝对大小。 假设取 部分名词在简体中文和繁体中文下的叫法不同。 表 16‑1 数据结构与算法的重要名词 English 简体中文 繁体中文 algorithm 算法 演算法 data structure 数据结构 資料結構 code 代码 程式碼 file 文件 檔案 function 函数 函式 method 方法 方法 variable 变量 變數 asymptotic complexity analysis 渐近复杂度分析 漸近複雜度分析0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0b5 JavaScript版‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建 结构体(struct)来模拟面向对象编程,与结构体相关联的函数就相当于其他语言中的 方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常都是作为某个类的一部分。静 态方法的行为类似于函数,因为它被绑定在类上,不能访问特定的实例变量。 ‧ C++ 和 Python 既支持过程式编程(函数),也支持面向对象编程(方法)。0 码力 | 375 页 | 30.68 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版function」可以被独立执行,所有参数都以显式传递。「方法 method」与一个对象关联,被隐式传递 给调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几种常见的编程语言为例来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建结构体(struct) 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 第 2 章 复杂度分析 hello‑algo ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 ‧ C++ 和 Python 既支持过程式编程(函数),也支持面向对象编程(方法)。 Q:图解“常见的空间复杂度类型”反映的是否是占用空间的绝对大小? 不是,该图展示的是空间复杂度,其反映的是增长趋势,而不是占用空间的绝对大小。 假设取0 码力 | 376 页 | 17.57 MB | 1 年前3
阮一峰 JavaScript 教程怪异之处得到了弥补。所以,JavaScript 还是值得学习,况且它的 入门真的不难。 JavaScript 的性能优势体现在以下方面。 (1)灵活的语法,表达力强。 JavaScript 既支持类似 C 语言清晰的过程式编程,也支持灵活的 函数式编程,可以用来写并发处理(concurrent)。这些语法特性已 经被证明非常强大,可以用于许多场合,尤其适用异步编程。 JavaScript 的所有值都是对象,这为程序员提供了灵活性和便利 成接受信息、处理数 据、发出信息等任务。对象可以复用,通过继承机制还可以定制。因 此,面向对象编程具有灵活、代码可复用、高度模块化等特点,容易维 护和开发,比起由一系列函数或指令组成的传统的过程式编程 (procedural programming),更适合多人合作的大型软件项目。 那么,“对象”(object)到底是什么?我们从两个层次来理解。 实例对象与 new 命令 对象是什么0 码力 | 540 页 | 3.32 MB | 10 月前3
共 6 条
- 1













