Go语言最差实践 - 李俱顺
0 码力 | 38 页 | 3.27 MB | 1 年前3Hello 算法 1.0.0b1 Java版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ‧ 当 nums = [1, ?, ?, ...] ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 // === File: worst_best_time_complexity 1 在数组尾部时,达到最差时间复杂度 O(n) if (nums[i] == 1) return i; } return -1; } � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现在0 码力 | 186 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b1 JavaScript版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ‧ 当 nums = [1, ?, ?, ...] ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 // === File: worst_best_time_complexity 在数组尾部时,达到最差时间复杂度 O(n) if (nums[i] === 1) { return i; } } return -1; } � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只0 码力 | 185 页 | 14.70 MB | 1 年前3Hello 算法 1.0.0b1 Swift版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ‧ 当 nums = [1, ?, ?, ...] ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 2. 复杂度分析 hello‑algo.com 26 // === File: 1 在数组尾部时,达到最差时间复杂度 O(n) if nums[i] == 1 { return i } } return -1 } � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现0 码力 | 190 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b1 Python版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 2. 复杂度分析 hello‑algo.com 25 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 # === File: worst_best_time_complexity # 当元素 1 在数组尾部时,达到最差时间复杂度 O(n) if nums[i] == 1: return i return -1 � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现在“特殊分布的数据”中,这些情况的出现概率往往很0 码力 | 178 页 | 14.67 MB | 1 年前3Hello 算法 1.0.0b1 TypeScript 版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ‧ 当 nums = [1, ?, ?, ...] ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 // === File: worst_best_time_complexity 在数组尾部时,达到最差时间复杂度 O(n) if (nums[i] === 1) { return i; } } return -1; } � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只0 码力 | 186 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b1 C++版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ‧ 当 nums = [1, ?, ?, ...] ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 // === File: worst_best_time_complexity 当元素 1 在数组尾部时,达到最差时间复杂度 O(n) if (nums[i] == 1) return i; } return -1; } � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现在0 码力 | 187 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b1 Golang版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ‧ 当 nums = [1, ?, ?, ...] ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 2. 复杂度分析 hello‑algo.com 26 // === File: 1 在数组尾部时,达到最差时间复杂度 O(n) if nums[i] == 1 { return i } } return -1 } � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现0 码力 | 190 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b2 Java版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ‧ 当 nums = [1, ?, ?, ...] ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 // === File: worst_best_time_complexity 1 在数组尾部时,达到最差时间复杂度 O(n) if (nums[i] == 1) return i; } return -1; } � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现在0 码力 | 197 页 | 15.72 MB | 1 年前3Hello 算法 1.0.0b2 Swift版
2.6. 最差、最佳、平均时间复杂度 某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ‧ 当 nums = [1, ?, ?, ...] ,即当首个数字为 1 时,无论数组多长都不需要继续遍历,此时达到 最佳时 间复杂度 Ω(1) ; 「函数渐近上界」使用大 ? 记号表示,代表「最差时间复杂度」。与之对应,「函数渐近下界」用 Ω 记号(Omega Notation)来表示,代表「最佳时间复杂度」。 2. 复杂度分析 hello‑algo.com 26 // === File: 1 在数组尾部时,达到最差时间复杂度 O(n) if nums[i] == 1 { return i } } return -1 } � 我们在实际应用中很少使用「最佳时间复杂度」,因为往往只有很小概率下才能达到,会带来一 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现0 码力 | 199 页 | 15.72 MB | 1 年前3
共 115 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12