三种情况一次报全
把三种情况一次算完,按 最好/最坏/平均 的顺序拼起来输出(用 / 隔开)。
一份复杂度分析该包含什么
给一段代码写复杂度分析,至少要包含【0】。
只说"这段代码很快"有什么问题
分析里只写一句"这段代码很快",问题是【0】。
这段代码跑了多少次
运行下面这段程序: A = [17, 24, 15, 13, 23] ops = 0 for i in range(len(A)): for j in range(i + 1, len(A)): ops += 1 p
第一步:数出操作次数
最终作品第一步:补全 count_pairs,数出"每两个元素比一次"要比多少次。 算 n = 5 的情况。
第二步:判出量级
上一题的次数是 n(n-1)/2。数据量翻倍时它变成几倍? 补全 grow,算 n 从 100 到 200 的倍数(整除)——这个数说明它属于哪个量级。
第三步:把空间也算上
补全 space:返回 复制一份的额外格子数/原地做的额外格子数(用 / 隔开)。 ⚠️ 分析里最常被漏掉的就是空间这一半。
第四步:据此选一个
补全 pick:给出数据规模,返回该用"暴力"还是"前缀和"。 规则:暴力操作数(n * m)不超过一百万就用暴力,超过才用前缀和。 这次问 n=1000、m=1000——算出来正好是一百万。 ⚠️
交付:一份完整的复杂度分析
这是这条路线的最终作品。把前面四步合起来,一次验完五条: "两两比较"在 n=5 时是 10 次 数据量翻倍时它变成 4 倍(所以是 O(n²)) 空间上,复制版额外 5 个格子、原地版 0 个 n=1000、m=100
"查找"要回答的是什么
挨个挪 砍一半 查找这件事要回答的是【0】。