我只想确认我的解释和计算是否正确。如果我错了,请纠正我。
A算法和B算法的运行时间分别为8.26789秒和814.21416秒。
如果我说通过使用计算A比98快98.98%是否正确:(1-8.26789 / 814.21416)* 100%?
谢谢。
答案 0 :(得分:1)
由于您希望能够说出A比B快多少,因此最好根据速度来定义。当A比B快2倍时,可以理解A的速度是B速度的两倍。速度与时间成反比。测量算法A和B做同样的工作,我们可以定义速度
现在让我们想一下两辆车,一辆以55英里/小时的速度行驶一段距离,而另一辆以50英里/小时的速度行驶,我们会说更快的车是
将该公式应用于您的算法,
这两种算法的速度差异很大(差不多是100倍)%可能不是比较它们的最佳方法。最好是说A x倍于比B:
算法A比B快98.48 x。
有关数学堆栈交换中有关此主题的讨论,请参阅here。
答案 1 :(得分:1)
虽然amdb的答案是正确的,但如果这是一项家庭作业,我怀疑它可能是一个旨在测试你的计算复杂性知识的技巧问题。
基于单次测量,您无法对算法A和B的相对速度进行任何说明。
举一个例子,快速排序算法是O(n log n),如果你要排序很多数字,它是一个比起来更快的算法,它是O(n ^ 2)。但是如果你对每个排序只有3个数字进行基准测试,那么冒泡排序几乎肯定比快速排序更快。针对一组输入的性能不会告诉您算法的比较性能,它只是告诉您算法与特定输入的相对性能,而不是测量计算复杂度的方式。