交付:一份完整的复杂度分析

交付:一份完整的复杂度分析

这是这条路线的最终作品。把前面四步合起来,一次验完五条: "两两比较"在 n=5 时是 10 次 数据量翻倍时它变成 4 倍(所以是 O(n²)) 空间上,复制版额外 5 个格子、

阅读更多 →
第四步:据此选一个

第四步:据此选一个

补全 pick:给出数据规模,返回该用"暴力"还是"前缀和"。 规则:暴力操作数(n * m)不超过一百万就用暴力,超过才用前缀和。 这次问 n=1000、m=

阅读更多 →
第三步:把空间也算上

第三步:把空间也算上

补全 space:返回 复制一份的额外格子数/原地做的额外格子数(用 / 隔开)。 ⚠️ 分析里最常被漏掉的就是空间这一半。

阅读更多 →
第二步:判出量级

第二步:判出量级

上一题的次数是 n(n-1)/2。数据量翻倍时它变成几倍? 补全 grow,算 n 从 100 到 200 的倍数(整除)——这个数说明它属于哪个量级。

阅读更多 →
第一步:数出操作次数

第一步:数出操作次数

最终作品第一步:补全 count_pairs,数出"每两个元素比一次"要比多少次。 算 n = 5 的情况。

阅读更多 →
这段代码跑了多少次

这段代码跑了多少次

运行下面这段程序: A = [17, 24, 15, 13, 23] ops = 0 for i in range(len(A)): for j in range(i + 1, len(A))

阅读更多 →
只说

只说"这段代码很快"有什么问题

分析里只写一句"这段代码很快",问题是【0】。

阅读更多 →
一份复杂度分析该包含什么

一份复杂度分析该包含什么

给一段代码写复杂度分析,至少要包含【0】。

阅读更多 →
三种情况一次报全

三种情况一次报全

把三种情况一次算完,按 最好/最坏/平均 的顺序拼起来输出(用 / 隔开)。

阅读更多 →
平均要几步

平均要几步

补全 average_steps:假设要找的元素等概率地是数组里的任意一个,返回平均比较次数(整除)。

阅读更多 →