时间复杂度的计算(含例题细致讲解)

目录

💯前言

💯时间复杂度的概念

💯单层循环时间复杂度计算公式

【例题】:

【练习】:

💯两层循环时间复杂度计算公式

【例题】: 

💯多层循环时间复杂度计算公式

 👍方法一:抽象为计算三维物体体积

⭐方法二:列式求和


💯前言

算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度空间复杂度


时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。

💯时间复杂度的概念

在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。 

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度

 请计算一下Func1中++count语句总共执行了多少次?

// 请计算一下Func1中++count语句总共执行了多少次?
void Func1(int N)
{
	int count = 0;
	for (int i = 0; i < N; ++i)
	{
		for (int j = 0; j < N; ++j)
		{
			++count;
		}
	}
	for (int k = 0; k < 2 * N; ++k)
	{
		++count;
	}
	int M = 10;
	while (M--)
	{
		++count;
	}
	printf("%d\n", count);
}

 实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数,那么这里我们使用大O的渐进表示法

 常见复杂度对比:

💯单层循环时间复杂度计算公式

⭐   1.列出循环趟数  t  ,以及每轮  i  的变化值

        2.找到  t    i  的关系

        3.确定停止条件

        4.联立方程

【例题】:

//计算下面代码的时间复杂度
int i = 1;
while(i<=n)
i = i*2;

【解】:

👍列出循环趟数  t 及每轮  i  的变化值

  t  012345
  i  12481632

👍找到  i    t  的关系:

❶    i=2^t

👍确定停止条件

❷    i<=n

 👍联立❶,❷方程

得出   2^t<=n

即       t<= 

 

以上就是单层循环时间复杂度的计算方法

【练习】:

//计算下面代码的时间复杂度
//练习1
int i=0;
while(i*i*i<=n)
   i++;

 【答案】:

//计算下面代码的时间复杂度
//练习2
y=0;
while((y+1)*(y+1)<=n)
   y=y+1;

 【答案】:

💯两层循环时间复杂度计算公式

⭐   1.列出外层循环趟数  t1  

        2.列出外层循环中  i  的变化值

        3.列出内层语句的执行次数 t2 

        4.求内层语句的执行次数 t2 之和 

【例题】: 

//计算下面代码的时间复杂度
int count=0;
for(k=1 ; k<=n ; k*=2)
   for(j=1;j<=n;j++)
      count++;

 【解】:

👍列出外层循环趟数  t1  ,列出外层循环中  k  的变化值

  t1  012345
  k  12481632

👍找到  k    t1  的关系

k=2^t1

由外层循环可得 2 ^ t1<= n ,即 t1 =

说明外层循环有

 👍列出内层语句的执行次数 t2 

t1  012345
  k  12481632
 t2 123456

👍求内层语句的执行次数 t2 之和

=( ( 1 + n ) * t1  )  /  2                                        ——— 等差数列求和公式

t1 =

所以时间复杂度为

以上就是双层循环时间复杂度的计算方法

💯多层循环时间复杂度计算公式

【例题】:

//计算下面代码的时间复杂度
for(i=0;i<=n;i++)
    for(j=0;j<=i;j++)
        for(k=0;k<j;k++)
          s++;

⭐方法一:抽象为计算三维物体体积

⭐方法二:列式求和

 👍方法一:抽象为计算三维物体体积

计算该体积即为时间复杂度:O(n^3)

👍方法二:列式求和

题解如下:

以上就是多层循环时间复杂度的计算方法 


感谢你看到最后,点个赞再走吧!

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值