时间复杂度跟空间复杂度
⭕算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。
⭕时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算 机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。
时间复杂度的概念:
算法的时间复杂度就是一个函数,可以理解为跟执行次数n的关系
int main()
{
int n=100;
int i=0;
while(i<n)
printf("hello world\n");
return 0;
}
比如上面这段代码,n为100次,这个循环要执行100次,执行次数跟n成正比。
用一个表达式就是O(n)=n.
常见的时间复杂度有:
O(1):常量级
O(n):线性级
O(n*):对数级*线性级
O(n²):平方级
O(n³):立方级
O():指数级
O(n!):阶乘级
对一个算法来说,极限的时间复杂度就是平方级,如果超过这个限度,算法实际意义几乎为0.
空间复杂度跟时间复杂度同理,要开什么级别的空间就是什么级别的空间复杂度。
数据结构相关概念
1、数据
表示信息的且能被计算机存储、处理的各种物理符号统称为数据。
2、数据项
具有独立逻辑,且不能再被分解的数据称为数据项。比如苹果的各种物理性质
3、数据元素
相关数据项的集合。比如一个苹果
4、数据对象
具有相同性质的数据元素构成的集合成为数据对象。比如水果
数据的逻辑结构:
1、集合结构:同类型数据集合起来
2、线性结构:数据元素之间存在一一对应的关系
3、树状结构:数据之间存在一对多的关系
4、图结构:数据之间存在多对多的关系
集合结构
线性结构
树状结构
图结构