如何根据增长顺序确定哪个程序更好?

时间:2015-08-09 10:02:05

标签: algorithm performance time-complexity big-o

一种算法的运行时间增长顺序为N;第二算法的运行时间的增长顺序是N ^ 2。

列出两个令人信服的理由,为什么程序员更愿意使用N ^ 2算法而不是N算法。

2 个答案:

答案 0 :(得分:1)

您无法根据增长顺序确定哪种算法更好。增长顺序仅描述所需资源的大小取决于输入数据。因此,可能存在这样一种情况:复杂度最差的程序更快,因为输入数据不够大。

例如,排序的Java实现在小数组(即少于29个元素)上使用Insertion Sort(O(N^2))并在big上计算sort(O(N^2))或Quicksort(O(Nlog(N)))阵列。

另一个例子是使用Floyd-Warshall算法(O(N^3))而不是Dijkstra Algortihm(O(E*logV))因为它有更简单的实现并且不需要优先级队列(因为我们没有在每个环境中实施它)

答案 1 :(得分:0)

  1. 如果实际运行时间为C0.NC1.N²C1.N < C0,则最好使用&#34;慢速&#34;算法

  2. 更好的空间复杂性。