采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
请问波波老师,对于算法复杂度的是针对一个算法,那对于一个大型系统的操作,经过很多相关系统的调用,这种怎么计算算法复杂度。有时看起来没有多复杂的算法,但就是跑起来慢,这是啥原因呢,谢谢
通常不会对一个大型系统计算算法复杂度,而只会对其中的具体某个算法模块计算算法复杂度。因为对一整个系统计算算法复杂度通常意义不大,系统算法复杂度无法揭示优化方向。但是对其中的一个具体的子算法看算法复杂度是有意义的。比如一个处理过程,有两个模块A和B,A的复杂度是O(n),B的复杂度是O(n^2),我们就知道了,我们的整个处理过程的瓶颈在B模块,我们的优化重点就可以放在B模块上。当然,在这个例子里,你可以对整个系统计算算法复杂度,他的复杂度是O(n^2)。但是这个O(n^2)其实湮灭掉了很多信息。
对于你描述的“没有多复杂的算法”,我不确定你是否描述的准确。如果你描述的准确的话,很多时候恰恰相反,越简单的算法越低效,而越复杂的算法越高效。以排序为例,选择排序最为简单,但是是相当低效的;而快排复杂很多,但同时也是高效的。我们发明那么多“复杂”的数据结构,或者机制,或者算法,恰恰是为了更高效。所以我们不能用算法的复杂与否来看算法的性能,还是要逐个模块分析算法复杂度,找到系统跑的慢的瓶颈在哪里:)
加油!
明白了,谢谢波波老师的耐心回复!
登录后可查看更多问答,登录/注册
课程配套大量BAT面试真题,高频算法题解析,强化训练
1.1k 13
1.1k 12
653 11
1.5k 10
1.2k 10