for循环嵌套if判断语句时间复杂度的计算,该怎么解决

for循环嵌套if判断语句时间复杂度的计算
for里面有if怎么算时间复杂度?if判断语句中的条件也要算进去吗?
------解决方案--------------------
引用:
你有程序要算复杂度很简单,在最内侧加上一个计数器变量,每执行1次加1。
在程序运行完后记录下这个计数器的值。

改变程序的规模(比如输入数组的长度),重复这个过程。

然后你得到了很多 程序规模-计数器 的值对。

在一张纸上描点画图。看曲线是什么类型的即可。
其实很难定义“最内侧”,就算是“最内侧”也不一定是执行次数最多的代码,不过也有估算价值
改变程序的规模直接测运行时间也可以做估算

但是如果你要较准确的时间复杂度,那最好阅读算法导论
------解决方案--------------------
如果基本操作就是比较,那么一条if 语句的计数为1
如果比较不是基本操作,相对基本操作,比较的时间可以忽略,那么只需要对基本操作计数
if 语句中,不执行基本操作的不计数,执行的计数。

时间复杂度是针对基本操作来说的;
一般循环的判断,计数,以及if 的比较操作,不计算在内,除非比较,循环计数,就是基本操作

以各种基于比较的排序为例,有两种基本操作:

1)比较元素的大小的比较操作
2)交换元素的位置;

很多时候,由于这两种操作,的耗时时间差距不大,都是不可忽略的,所以都属于基本操作。
那么,以这两种操作的,时间复杂度最高的,计算时间复杂度。

如果,比较只是针对,大对象的一个比较小的键值的操作,
那么比较也是可以忽略的,可以不用计算他的时间复杂度。

这个排序过程中,还会执行循环变量的比较,和递增递减操作,不过和前面两种操作比较起来,耗时可以忽略。。。
特别是对象比较大的时候,所以他们不是基本操作。

基本操作,就是解决一个问题的主要操作,往往是耗时最长的操作,而且执行次数,往往和数据规模相关。





------解决方案--------------------
循环本身,如果有和规模相关的控制条件的话,可以判断基本操作的执行的次数
if  语句,可以提前终止循环,从而可以缩小基本操作的执行的次数。。。比只考虑循环时候执行的次数要少。

同样是排序。

内部排序,内存读写,比较属于基本操作。

外部排序,外设的读写操作,才是基本操作。