我知道有很多关于算法的时间和空间复杂性的问题。我一直看到非常复杂的事情,例如O(n)
,o(n)
,w(n)
等
从程序员的角度来看,应该有什么知识可以使程序在时间(主要)方面更有效率(因为现在空间不是太大的问题)。
我看到有人在谈论O(n)
,我应该只关注O(n)
还是还有其他事情?
答案 0 :(得分:0)
首先:Big-O符号和复杂性是两个不同的东西。 Big-O表示法(通常)用于简化算法复杂度分析,但Big-O表示法本身与算法复杂性无关。
我认为您应该能够计算简单算法和函数的复杂性,因此您可以编写有效的代码,或者至少注意到代码效率不高并且您可以寻求改进。
但是计算复杂算法的复杂性可能非常困难(甚至不可能)。这适用于算法工程师,而不适用于程序员。
这只是我的意见,因为这个问题基于主要观点。
在大多数情况下,我们只关心最坏情况的复杂性,因此我们知道它有多糟糕。对于简单算法,最佳和最差情况很可能是相同的。但我们也使用摊销的复杂性(通常用于随机数据结构)和平均案例复杂性(例如快速排序)。