【C语言】时间复杂度和空间复杂度

本文介绍了算法效率的两个关键指标——时间复杂度和空间复杂度,阐述了如何计算它们,并通过具体例子说明了如何分析算法的时间复杂度。重点提到,对于时间复杂度为O(N^2)的算法,最好避免使用递归,推荐采用迭代方式以减少计算复杂性。此外,还讨论了一个具有O(log N)时间复杂度的例子,强调其高效性。
摘要由CSDN通过智能技术生成

一、算法效率

  • 算法效率分为时间效率(时间复杂度)和空间效率(空间复杂度)
  • 用O来表示时间复杂度和空间复杂度

1、时间复杂度:衡量一个算法的运行速度
(1)计算算法中的基本操作的执行次数
(2)推导大O阶法方法:
①去掉系数,所有系数按1处理
②在修改后的运行次数函数中,只保留最高阶项
2、空间复杂度:衡量一个算法所需要的额外空间
3、有些算法的时间复杂度存在最好、最坏和平均情况(一般关注最坏)
(1)最坏情况:任意输入规模的最大运行次数
(2)最好情况:任意输入规模的最小运行次数
(3)平均情况:任意输入规模的期望运行次数

二、计算

1、计算Fun c1的时间复杂度

void fun c1(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);
} 

分析:第一个for循环操作执行了 N^2 次
第二个for循环操作执行了 2N 次

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值