如何只运行程序正确而准确地评估程序运行时和内存复杂性?
我可以使用不同的输入大小多次运行程序。可以衡量它的工作时间。但是这次我该怎么办呢?怎么说(只看到“N - 时”结果)这是线性的还是二次函数?
我想我理解如何衡量内存复杂性。只需获取多少内存使用过程。并根据它来决定内存的复杂程度。
答案 0 :(得分:0)
虽然我同意有关时间和内存复杂性应该被推理的问题的评论,而不仅仅是因为:
我仍然认为如果有疑问,可以做一个快速测量以验证您的推理。
关于时间复杂性:
从输入大小开始,例如这将采用例如总量T0。 然后给你的程序输入大小20.这将采用例如T1的总量。 然后给你的程序输入大小40.这将采用例如T2的总量。 然后给你的程序输入大小为80.这将需要例如T3的总量。 继续加倍,直到花费太多时间才能做到这一点。
每次将输入大小加倍时,执行时间都会发生变化。 过了一会儿,您会在程序中看到趋势:
如果每次加倍输入时执行时间加倍,则执行时间为 Lineair
如果每次加倍输入时看起来执行时间翻两番,那么执行时间为二次
如果每次双倍输入时执行时间<8> 看起来很高,则执行时间为 Cubic
当然,执行时间几乎永远不会完全是双倍或四倍,但关于这些N时间的事情是,你估计当你走向时的行为一个无限大的输入