最好和最坏一起报出来

最好和最坏一起报出来

同一个 lsearch_steps。把最好情况和最坏情况拼起来输出(用 / 隔开):找第一个元素、找最后一个元素。

阅读更多 →
写一个数步数的线性查找

写一个数步数的线性查找

补全 lsearch_steps:从头挨个比,返回比了几次(找到就停)。 这次找 17。

阅读更多 →
运气最差时呢

运气最差时呢

同一个数组,改成找 24。运行下面这段程序: def lsearch_steps(a, target): steps = 0 for x in a: steps +=

阅读更多 →
运气最好时要几步

运气最好时要几步

在 [13, 15, 17, 23, 24] 里从头挨个找 13。运行下面这段程序: def lsearch_steps(a, target): steps = 0 for x in

阅读更多 →
为什么最坏情况最有用

为什么最坏情况最有用

工程上最关心最坏情况,是因为【0】。

阅读更多 →
平时说的复杂度指哪一种

平时说的复杂度指哪一种

不加说明时,人们说的时间复杂度通常指【0】。

阅读更多 →
⚠️ 数据量多大之后 B 才会反超 A

⚠️ 数据量多大之后 B 才会反超 A

算法 A 是 O(n²) 但常数很小(操作数正好是 n * n);算法 B 是 O(n) 但常数很大(操作数是 100 * n)。 补全 crossover:找出最小的 n,使得 B 的操作数严格小于

阅读更多 →
同一个规模下,两种做法各要多少步

同一个规模下,两种做法各要多少步

补全 compare:返回 暴力操作数/前缀和操作数/倍数(用 / 隔开)。 算 n=1000、m=1000。

阅读更多 →
算出翻倍之后的倍数

算出翻倍之后的倍数

补全 grow:返回数据量从 n 翻到 2n 时,一个 O(n²) 算法的操作数变成几倍(整除)。 算 n = 100 的情况。

阅读更多 →
大数据下两种做法差多少

大数据下两种做法差多少

一千个元素、一千次查询。运行下面这段程序: def brute_ops(n, m): return n * m def prefix_ops(n, m): return n + m

阅读更多 →