一种算法的运行时间增长顺序为N;第二算法的运行时间的增长顺序是N ^ 2。
列出两个令人信服的理由,为什么程序员更愿意使用N ^ 2算法而不是N算法。
答案 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)
如果实际运行时间为C0.N
而C1.N²
为C1.N < C0
,则最好使用&#34;慢速&#34;算法
更好的空间复杂性。