请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问波波老师,一个大型系统算法复杂度问题

请问波波老师,对于算法复杂度的是针对一个算法,那对于一个大型系统的操作,经过很多相关系统的调用,这种怎么计算算法复杂度。有时看起来没有多复杂的算法,但就是跑起来慢,这是啥原因呢,谢谢

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2018-06-05 22:53:26

通常不会对一个大型系统计算算法复杂度,而只会对其中的具体某个算法模块计算算法复杂度。因为对一整个系统计算算法复杂度通常意义不大,系统算法复杂度无法揭示优化方向。但是对其中的一个具体的子算法看算法复杂度是有意义的。比如一个处理过程,有两个模块A和B,A的复杂度是O(n),B的复杂度是O(n^2),我们就知道了,我们的整个处理过程的瓶颈在B模块,我们的优化重点就可以放在B模块上。当然,在这个例子里,你可以对整个系统计算算法复杂度,他的复杂度是O(n^2)。但是这个O(n^2)其实湮灭掉了很多信息。


对于你描述的“没有多复杂的算法”,我不确定你是否描述的准确。如果你描述的准确的话,很多时候恰恰相反,越简单的算法越低效,而越复杂的算法越高效。以排序为例,选择排序最为简单,但是是相当低效的;而快排复杂很多,但同时也是高效的。我们发明那么多“复杂”的数据结构,或者机制,或者算法,恰恰是为了更高效。所以我们不能用算法的复杂与否来看算法的性能,还是要逐个模块分析算法复杂度,找到系统跑的慢的瓶颈在哪里:)


加油!

0 回复 有任何疑惑可以回复我~
  • 提问者 慕九州6241723 #1
    明白了,谢谢波波老师的耐心回复!
    回复 有任何疑惑可以回复我~ 2018-06-06 09:12:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信