首页 > 其他分享 >时间复杂度练习

时间复杂度练习

时间:2023-08-11 18:04:48浏览次数:32  
标签:count int 复杂度 练习 ++ 时间

3.时间复杂度练习

练习1:

// 计算Func2的时间复杂度?
void Func2(int N)
{
	int count = 0;
	for (int k = 0; k < 2 * N ; ++ k)
	{
		++count;
	}
	int M = 10;
	while (M--)
	{
		++count;
	}
	printf("%d\n", count);
}

解析:时间复杂度为O(N)。用函数表达式来表示(N表示执行次数):F(N)=2* N+10。用大O的渐进表示法需要去掉加法常数,2*N+10是属于N这个量级的,N的系数无论多大都要改为1,因为当N无限大时,系数对结果影响不大,所以时间复杂度为O(N)。

练习2:

// 计算Func3的时间复杂度?
void Func3(int N, int M)
{
	int count = 0;
	for (int k = 0; k < M; ++ k)
	{
		++count;
	}
	for (int k = 0; k < N ; ++ k)
	{
		++count;
	}
	printf("%d\n", count);
}

解析:时间复杂度为O(N+M)。具体运行次数为F(N)=N+M;用大O的渐进表示法估算之后时间复杂度为O(N+M),因为N和M都是属于同一个量级的,所以M不能省略。

练习3:

// 计算Func4的时间复杂度?
void Func4(int N)
{
	int count = 0;
	for (int k = 0; k < 100; ++ k)
	{
		++count;
	}
	printf("%d\n", count);
}

解析:时间复杂度为O(1)。具体运行次数为100次,是常数级,根据大O的渐进表示法时间复杂度为O(1)。

练习4:

// 计算strchr的时间复杂度?
const char * strchr ( const char * str, int character );

解析:时间复杂度为O(N)。strchr函数作用为在一个串中查找给定字符的第一个匹配之处,并且返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符就返回NULL指针。 主要实现过程为:

while(*str++)
{
	if(*str==character)
		return str;
	}
return NULL;

在这种情况下时间复杂度就要区分为最好情况和最坏情况以及平均情况。假设字符串中共有n个字符,最好情况是第一次就找到,时间复杂度为O(1);最坏情况是在最后一次才找到或者没有找到,时间复杂度是O(N);平均情况下整体来看时间复杂度为O(N/2)。==但是在实际中,一般情况下关注的是最坏运行情况==。所以数组中搜索数据时间复杂度为O(N)。

标签:count,int,复杂度,练习,++,时间
From: https://blog.51cto.com/u_15562309/7050582

相关文章

  • 算法练习-day46
    单调栈739.每日温度题意:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。实例:思路:本题作为单调栈的第一道题,我们需要了解什么是单调栈?单调栈中存储......
  • 练习二:证件照换背景
    这个有很多种方法,这里就说一下比较简单的方法方法一打开一张证件照,假设是蓝底的证件照,然后选择图像-->调整-->替换颜色 然后按照如下所示即可换背景 但是这个方法对于有些头发丝的话可能不太友好,像这种比较简单的照片用魔棒工具选择颜色选区再换背景颜色也很快 注意:......
  • 百度人脸识别授权序列号-设备时间复原问题
    Q:为什么单设备授权序列号失效?A:以下情况都有可能导致序列号失效,请您进行一-排查1.测试序列号过期,请在百度智能云管理后台申请更多测试序列号2.CPU、网卡等硬件损坏导致硬件指纹变更3.已经激活的设备硬件变更4.SDK升级:安卓1.0&2.0版本升级至3.0&4.0&5.0版本会导......
  • python限制函数的执行时间
    importsignalclassTimeoutException(Exception):passdeftimeout_handler(signum,frame):raiseTimeoutException()deflimit_time(seconds=10):defdecorator(func):defwrapper(*args,**kwargs):signal.signal(signal.SIGAL......
  • 长时间等待代理隧道响应的有效解决办法
    作为一名专业爬虫代理,我深知在使用代理时可能会遇到代理隧道长时间等待响应的情况。这种情况极大地妨碍了爬虫程序的效率和稳定性。在本文中,我将分享一些有效的解决办法,帮助你解决长时间等待代理隧道响应的问题,并提升你的爬虫程序效果。问题分析:为什么会出现长时间等待代理隧道响应......
  • Linux服务器修改时区时间
         时间的一致性很关键,对于日志的分析和程序的对接都至关重要!01、tzselect 修改时区可以使用命令tzselect,修改时区。操作示例:$ tzselectPleaseidentifyalocationsothattimezonerulescanbesetcorrectly.Pleaseselectacontinentorocean.1)Africa2......
  • Linux 更改时区、时间
    一、手动修改1.date命令:查看当前时间2. date-s 时分秒:修改时间还需要把日期改过来3. date-s 完整日期时间(YYYY-MM-DDhh:mm[:ss]):修改日期、时间时间要用双引号括起来,否则报错手动修改会存在一定的时间误差4. hwclock-w将时间写入bios避免重启失效。当我们进行完Li......
  • 时空复杂度分析
    算法的复杂度是评估算法优劣一个重要指标,可以帮助我们估算出算法在执行之后所需要的时间和空间。算法的复杂度分为算法的时间复杂度和空间复杂度。在介绍时间复杂度之前,我们需要引入时间频度的概念。时间频度是指算法中语句的执行次数,用来表示,为问题的规模。在算法竞赛中,一般为了理......
  • 第一章总练习题
    要记住:         以后经常要用到上述技巧,把最大(小)值进行转化。记住习题12、13的结论。两个奇函数之和为奇函数,其积为偶函数。两个偶函数之和与积都为偶函数。奇函数和偶函数之积为奇函数。掌握和差化积公式和积化和差公式。    ......
  • ES 时间格式
    ES中的日期类型Elasticsearch在索引创建之前并不是必须要创建索引的mapping。关系型数据库的思维就是在于写入数据之前,并不强制创建表结构。我们不用事先声明字段名称,字段类型以及长度等属性就可以直接向一个不存在的表中直接写入数据。Elasticsearch把这种特性称之为dynamicm......