Hello 算法 1.0.0b4 Golang版某些算法的时间复杂度不是固定的,而是与输入数据的分布有关。例如,假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可 以得出以下结论: ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,此时达到 最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, Shuffle(len(nums), func(i, j int) { nums[i], nums[j] = nums[j], nums[i] }) return nums } /* 查找数组 nums 中数字 1 所在索引 */ func findOne(nums []int) int { for i := 0; i < len(nums); i++ { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 度」可以体现算法在随机输入数据下 的运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数则是数组长度的一半 ? 2 ,平均 时间复杂度为 Θ(? 2) = Θ(?) 。 但在实际应用中,尤其是较为复杂的算法,计算平均时间复杂度比较困难,因为很难简便地分析出在数据分0 码力 | 347 页 | 27.40 MB | 1 年前3
Hello 算法 1.1.0 Go版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? nums[j] = nums[j], nums[i] }) 第 2 章 复杂度分析 hello‑algo.com 41 return nums } /* 查找数组 nums 中数字 1 所在索引 */ func findOne(nums []int) int { for i := 0; i < len(nums); i++ { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0b2 Golang版某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ?(?) ; ‧ 当 nums = [1, Shuffle(len(nums), func(i, j int) { nums[i], nums[j] = nums[j], nums[i] }) return nums } /* 查找数组 nums 中数字 1 所在索引 */ func findOne(nums []int) int { for i := 0; i < len(nums); i++ { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 的 运行效率,用 Θ 记号(Theta Notation)来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数则是数组长度的一半 ? 2 ,平均 时间复杂度为 Θ(? 2) = Θ(?) 。 但在实际应用中,尤其是较为复杂的算法,计算平均时间复杂度比较困难,因为很难简便地分析出在数据分布0 码力 | 202 页 | 15.73 MB | 1 年前3
Hello 算法 1.0.0b5 Golang版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? nums[j] = nums[j], nums[i] }) 第 2 章 复杂度分析 hello‑algo.com 39 return nums } /* 查找数组 nums 中数字 1 所在索引 */ func findOne(nums []int) int { for i := 0; i < len(nums); i++ { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 杂度可以体现算法在随机输入数据下的运行效率, 用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往是比较困难的,因为很难分析出在数据分布下的整体数学0 码力 | 379 页 | 30.70 MB | 1 年前3
Hello 算法 1.0.0 Golang版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? nums[j] = nums[j], nums[i] }) 第 2 章 复杂度分析 hello‑algo.com 41 return nums } /* 查找数组 nums 中数字 1 所在索引 */ func findOne(nums []int) int { for i := 0; i < len(nums); i++ { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。0 码力 | 382 页 | 17.60 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? nums[j] = nums[j], nums[i] }) 第 2 章 复杂度分析 www.hello‑algo.com 41 return nums } /* 查找数组 nums 中数字 1 所在索引 */ func findOne(nums []int) int { for i := 0; i < len(nums); i++ { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。0 码力 | 384 页 | 18.49 MB | 10 月前3
Hello 算法 1.0.0b1 Golang版某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ?(?) ; ‧ 当 nums = [1, Shuffle(len(nums), func(i, j int) { nums[i], nums[j] = nums[j], nums[i] }) return nums } /* 查找数组 nums 中数字 1 所在索引 */ func findOne(nums []int) int { for i := 0; i < len(nums); i++ { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 的 运行效率,用 Θ 记号(Theta Notation)来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数则是数组长度的一半 ? 2 ,平均 时间复杂度为 Θ(? 2) = Θ(?) 。 但在实际应用中,尤其是较为复杂的算法,计算平均时间复杂度比较困难,因为很难简便地分析出在数据分布0 码力 | 190 页 | 14.71 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Go 版演算法的時間效率往往不是固定的,而是與輸入資料的分佈有關。假設輸入一個長度為 ? 的陣列 nums ,其 中 nums 由從 1 至 ? 的數字組成,每個數字只出現一次;但元素順序是隨機打亂的,任務目標是返回元素 1 的索引。我們可以得出以下結論。 ‧ 當 nums = [?, ?, ..., 1] ,即當末尾元素是 1 時,需要完整走訪陣列,達到最差時間複雜度 ?(?) 。 ‧ 當 nums = [1, ?, ? nums[j] = nums[j], nums[i] }) 第 2 章 複雜度分析 www.hello‑algo.com 41 return nums } /* 查詢陣列 nums 中數字 1 所在索引 */ func findOne(nums []int) int { for i := 0; i < len(nums); i++ { // 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1) 可以體現演算法在隨機輸入資料 下的執行效率,用 Θ 記號來表示。 對於部分演算法,我們可以簡單地推算出隨機資料分佈下的平均情況。比如上述示例,由於輸入陣列是被打 亂的,因此元素 1 出現在任意索引的機率都是相等的,那麼演算法的平均迴圈次數就是陣列長度的一半 ?/2 ,平均時間複雜度為 Θ(?/2) = Θ(?) 。 但對於較為複雜的演算法,計算平均時間複雜度往往比較困難,因為很難分析出在資料分佈下的整體數學期0 码力 | 385 页 | 18.80 MB | 10 月前3
Go 入门指南(The way to Go)语言开发模式 的最佳实践,同时也会帮助初学者逃离一些语言的陷阱。第 18 章可以作为你在开发时的一个参考手册, 因为当中包含了众多的有价值的代码片段以及相关的解释说明。 最后要说明的是,你可以通过完整的索引来快速定位你需要阅读的章节。书中所有的代码都在 Go1.4 版本 下测试通过。 这里有一段来自在 C++、Java 和 Python 领域众所周知的专家 Bruce Eckel 的评论: “作为一个有着 gid=2524765&trk=myg_ugrp_ovr。 Go 编程语言的维基百科:en.wikipedia.org/wiki/Go_(programming_language) Go 语言相关资源的搜索引擎页面:gowalker.org Go 语言还有一个运行在 Google App Engine 上的 Go Tour,你也可以通过执行命令 go install go-tour.googlecode > )通过在内存中按字节比较来实现字符串的对 比。你可以通过函数 len() 来获取字符串所占的字节长度,例如: len(str) 。 字符串的内容(纯字节)可以通过标准索引法来获取,在中括号 [] 内写入索引,索引从 0 开始计数: 字符串 str 的第 1 个字节: str[0] 第 i 个字节: str[i - 1] 最后 1 个字节: str[len(str)-1] 需要注意的是,这种转换方案只对纯0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)《Go入门指南》,你可以参与到本书的翻译或纠正工作中来,具体请联系【无闻 E-mail: u#gogs.io】,一同完善本书并帮助壮大 Go 语言在国内的学习群体,给大家提供更好的学习资源。 参见 Go 语言学习资料与社区索引。 2012 年 3 月 28 日以前的博文中的内容基本过时,不要再看 符合等式 百度+思考+失败+翻墙+谷歌+尝试=解决 的问题最好不要发问 本书原作者:Ivo Balbaert 参与翻译人员: 章可以作为你在开发时的一个参考手册,因为当中包含了众多 前言 - 12 - 本文档使用 书栈(BookStack.CN) 构建 的有价值的代码片段以及相关的解释说明。 最后要说明的是,你可以通过完整的索引来快速定位你需要阅读的章节。书中所有的代码都在 Go1.4 版本下测试通 过。 这里有一段来自在 C++、Java 和 Python 领域众所周知的专家 Bruce Eckel 的评论: “作为一个有着 gid=2524765&trk=myg_ugrp_ovr。 Go 编程语言的维基百科:en.wikipedia.org/wiki/Go_(programming_language)) Go 语言相关资源的搜索引擎页面:gowalker.org Go 语言还有一个运行在 Google App Engine 上的 Go Tour,你也可以通过执行命令 go install go- 时间轴: 1.1 起源与发展0 码力 | 466 页 | 4.44 MB | 1 年前3
共 25 条
- 1
- 2
- 3













