程序员应该知道多少复杂性?

时间:2015-09-08 12:04:15

标签: big-o complexity-theory

我知道有很多关于算法的时间和空间复杂性的问题。我一直看到非常复杂的事情,例如O(n)o(n)w(n)

从程序员的角度来看,应该有什么知识可以使程序在时间(主要)方面更有效率(因为现在空间不是太大的问题)。

我看到有人在谈论O(n),我应该只关注O(n)还是还有其他事情?

1 个答案:

答案 0 :(得分:0)

首先:Big-O符号和复杂性是两个不同的东西。 Big-O表示法(通常)用于简化算法复杂度分析,但Big-O表示法本身与算法复杂性无关。

我认为您应该能够计算简单算法和函数的复杂性,因此您可以编写有效的代码,或者至少注意到代码效率不高并且您可以寻求改进。

但是计算复杂算法的复杂性可能非常困难(甚至不可能)。这适用于算法工程师,而不适用于程序员。

这只是我的意见,因为这个问题基于主要观点。

在大多数情况下,我们只关心最坏情况的复杂性,因此我们知道它有多糟糕。对于简单算法,最佳和最差情况很可能是相同的。但我们也使用摊销的复杂性(通常用于随机数据结构)和平均案例复杂性(例如快速排序)。