欢迎您访问 广东某某电缆桥架有限公司官方网站

亿兆简介 APP下载 网站地图

欢迎来电咨询

13988888888

新闻资讯

全国服务热线

13988888888

技术过硬,据实报价

新闻动态

当前位置: 主页 > 新闻资讯 > 新闻动态

如何优化算法,使得能够有效避免两重或多重for循环?

2024-06-10 05:20 已有人浏览 佚名

本人算法萌新,对算法还不是有很深的了解。最近在做算法题,总是遇到一些对算法时间复杂度要求很高的题目,所以想问问大家是怎样优化算法,降低复杂度的,不只是局限于for循环。

具体情况具体分析。不同的算法有不同的处理办法,没有一概而论的。


比如说排序,可以从两重循环的n2复杂度降低为nlogn的复杂度。

for 循环不好吗QAQ……

循环展开是优化运算次数的,并不优化复杂度。

FFT 内部还有两重(三重也行,看写法)循环呢……但是复杂度仍然是 O(nlogn) 啊QAQ

匿了

我觉得解决方法就是换个算法。

写算法时最常见的几种时间复杂度不外乎:

(1)O(1)

(2)O(logn)

(3)O(n)

(4)O(nlogn)

(5)O(n^2)

O(n^2)是一个底线,你会发现通常自己写的最符合直觉的方法几乎都是O(n^2),如果时间复杂度更高,常常会吃TLE。

那不妨看看剩下四个时间复杂度:

(1)O(1),一般是单步操作,如果出现在查找,那就是大名鼎鼎的哈希表了。

(2)O(logn),一般和树形结构有关。

(3)O(n),这个比较玄,很难对应到某个结构。非基于比较的排序,如计数排序能达到这么优秀的复杂度。

(4)O(nlogn),一般用树形结构来解决一维数组的问题就会得到这种复杂度。

所以题主。。你需要做的就是熟悉各种数据结构和常用算法,然后往具体的情景上套。。(感觉说了句废话)。。套的时候可以想想自己的目标是什么,然后想想这个目标时间复杂度对应了什么结构或者算法。。

最后扯一句,如果抛开算法不谈只谈循环的话,你可以看看编译原理的书,里面会介绍一种叫“循环优化”的技术。。

希望有用。。

TAG: 复杂 算法

与如何优化算法,使得能够有效避免两重或多重for循环?相关的其他内容

平台注册入口