改进函数的 运行 时间意味着什么?

What does improving a function's running time mean?

假设一个函数总共有 10N + 10 个步骤。那么函数 class 就是 O(N)。如果我想改善函数的 运行 时间,这是否意味着减少步骤数并减少函数 class 以使其小于线性?

从字面上看,如果你在更短的时间内完成 运行s,你就减少了函数的 运行ning 时间。通常有两个方向可以做到这一点:想象一下现实生活 运行ning,你可以通过加强你的肌肉(升级到 NASA 超级计算机)在更短的时间内 运行,或者缩短你必须到达的距离运行(改进/改变算法以减少步骤)。我们只关注第二个方向。


还有很多因素需要考虑,例如您的函数的实际输入是什么?

如果 N 很小 99% 的时间,那么 常数因子很重要 即使它们是相同的 class O (N). O(10^6*N)和O(2*N)都是O(N),但是N小于10^6

时就没那么显性了

如果N是通常,你仍然可以说你通过减少常数因子改进了函数,但是可以忽略不计(但是是的,您仍在减少它)。如果您需要可观察到的提升,那么您可能需要更改算法,更改数据结构,以将函数改进到更好的复杂度class(从 O( N) 到 O(lg N) 例如)。


因此,用你自己的话说:"decrease the number of steps""reduce the function class"都减少了运行函数的时间,但哪个是可观察的并因此有用,取决于它的用法和其他现实因素。