我正在寻找一种基于运行时确定程序时间复杂度的方法。
我已经为不同大小的n绘制了我的结果,现在正在寻找一种方法来确定常数c和n0,以便每个n≥n0时f(n)≤c*(g(n))。
关于该计划:
输入:n,元素数量
输出:运行时间
测量数据的所有步骤都已完成100次,以获得程序的平均运行时间。
不同大小的n的一些示例值:
<磷>氮...............运行时(ms)的1000 ......... .1,6
10 000 ...... .2222,8
100 000 ...... 25213
非常感谢!
pepefatha
答案 0 :(得分:0)
大多数编程语言都具有获取当前时间的常量时间函数。你可以通过输入程序结束和开始之间的时差来计算程序的时间,并将这些时间绘制成不同大小的n。
答案 1 :(得分:0)
您肯定需要更多数据点。但它看起来像你的n乘以10,大约将你的运行时间乘以100,所以n ^ 2将是我的猜测。
对于常数,你只需要在对数刻度上绘制它并找到截距(从最大值推断,即那些大于n0
的值)和y轴,这将是对数(c)中。