时间复杂度与空间复杂度

1、数据结构与算法的概念

1.1何为数据结构(Data Structure)?

数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存储一种或多种特定关系的数据元素的集合。通俗来讲,就是将大量杂乱无章的数据通过某种结构进行管理。(增加、删除、查找、修改)数据。

1.2何为算法?

简单来说,就是通过一系列的计算步骤,将输入的数据转化成预期的结果。好的算法能够高效的管理数据。因此数据结构与算法不分家。

1.3如何学好数据结构与算法?

在这里插入图片描述
在这里插入图片描述

2、算法效率

2.1如何衡量一个算法的好坏?

一般是从时间和空间这两个维度来衡量。即时间复杂度与空间复杂度。一个算法运行时所需的时间越短,额外申请的空间越小,那么该算法就越好。
在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经很大了。所以我们如今已经不需要再特别关注算法的空间复杂度,更关注时间复杂度。(但在笔试与面试中两者都有所考察)

3、时间复杂度

3.1时间复杂度的定义

时间复杂度是用来定性描述算法的运行时间。随着数据规模的增长,算法的运行时间是呈线性增长还是平方增长还是对数增长……
在这里插入图片描述

3.2如何理解数据规模

在这里插入图片描述

在这里插入图片描述

3.3为什么不直接去计算程序的运行时间呢?

  1. 程序的运行时间与编译环境(Debug版本下会加载调试信息,运行的较慢;Release版本下不会加载调试信息,运行的较快。)和运⾏机器的配置都有关系。比如同⼀个算法程序,在一台机器上,分别使用旧的编译器和新编译器运行时,运行的时间是有所差异的。
  2. 同⼀个算法程序,在低配置机器和⾼配置机器上运行时,运⾏时间也不同。
  3. 程序的运行时间无法在程序写好之前确定
#include<stdio.h>
#include<time.h>
int main()
{
   
	int count = 0;
	int begin = clock();//clock函数是用来求程序运行到这行代码时花费的时间。(单位是毫秒)需要包含的头文件是<time.h>
	for (int i = 0; i < 1000000000; i++)
	{
   
		count++;
	}
	int end = clock();
	printf("该算法的运行时间为%d\n", end - begin);
	return 0;
}

在这里插入图片描述

3.4时间复杂度的计算

在这里插入图片描述
在这里插入图片描述

总结:随着数据规模的增长,先计算该算法大概的执行次数,然后再用大O的渐近表示法表示出来。

3.3案例

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值