考研中的算法时间复杂度求解
今天刚刚开始复习了考研的数据结构,结果在第一篇绪论就遇到问题了,哈哈哈,就是求解算法的时间复杂度问题,刚一开始有点蒙,不知道怎么做,相信很多考研的小伙伴一开始都会遇到这个问题吧,这里总结了一点个人心得,分享给要考研的小伙伴。
对于一些基本概念这里主要介绍一些最重要的,不关紧要的就不说啦~
- 求解步骤
1、找到基本语句:
就是程序中出现次数最多的那句代码啦,比如一层for循环就是循环中那句代码,多层循环就是**最内层循环的那句代码**
2、计算基本语句的执行次数的数量级:
其实在做题的时候基本就等同于求出基本语句执行次数,至于数量级是什么意思呢,就比如我现在求出来一个基本语句的执行次数是(n+3*n^2),那么这个基本语句的实行次数数量级就是n^2,即我们只需要关心**幂次最高的那一项**,并且这一项前面的系数也可忽略。
3、用大Ο记号表示算法的时间性能:
就是把我们在第2步求出的基本语句执行次数的数量级放在O()的括号中。
常见算法时间复杂度及其大小比较
- 来看看例题吧
1.
void fun(int n){
int i=