Big o 程序员应该对复杂性了解多少?

Big o 程序员应该对复杂性了解多少?,big-o,complexity-theory,Big O,Complexity Theory,我知道有很多关于算法的时间和空间复杂性的问题被问到了。我看到了非常复杂的事情,比如O(n),O(n),w(n)等等 从程序员的角度来看,所有的知识应该是什么,以使程序在时间方面(主要是)更有效(因为现在空间已经不是什么大问题了) 我看到人们在谈论O(n),我应该只关心O(n),还是还有其他事情?首先:大O符号和复杂性是两件不同的事情。Big-O表示法(通常)用于简化算法复杂性分析,但Big-O表示法本身与算法复杂性无关 我认为您应该能够计算简单算法和函数的复杂度,这样您就可以编写高效的代码,或者

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

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


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

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

我认为您应该能够计算简单算法和函数的复杂度,这样您就可以编写高效的代码,或者至少注意到如果您的代码不高效,您可以寻求改进

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

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


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

您所说的是大O符号。我建议谷歌搜索这个主题并阅读相关内容。你的问题没有真正的意义。我可以读到关于Big O的文章,但它不能帮助我知道是否只有它与程序员的工作相关,或者其他事情也相关。学习计算机科学和编程有一点关联。你是否在问,作为一名程序员,了解时间和空间的复杂性是否重要?我想说这是至关重要的。不,这不是我的问题,问题是我应该从程序员的角度知道多少,请解释我应该知道的事情。你应该知道多少是什么意思?要么你知道,要么你不知道。你能说得更具体一点吗?为什么我们只关心最坏的情况?对于给定的数据集,我们如何确保2种算法总是需要最坏的情况时间,而不是其他情况?@SreekanthKarumanaghat这听起来像是一个新问题,所以我稍微扩展了我的答案。如果你想知道更多,你应该打开一个新问题。好的,我将添加一个新问题。