数据结构——时间复杂度和空间复杂度
前言
数据结构和算法是互相融合的,数据结构是数据的储存方式,算法是数据处理的方法,这两个要相互配合,类似唇齿相依
动态规划是一类算法的总称
文章目录
时间复杂度和空间复杂度
大概意思就是程序在运行时所花费的时间和占用的空间这样的情况,一般是评定程序性能好坏的作用
现阶段比较关系时间复杂度的大小,因为内存发展的比较快,除了嵌入式领域,没人关心空间大小了(摩尔定律)
摩尔定律,是因特尔的创始人之一,说在硬件领域里面发展的速度很快,内存的大小也发展的很快,现阶段几乎不用考虑占用空间的大小
时间复杂度
对算法而言,时间复杂度指的是程序运行的大概次数,不是运行时间的大小*(因为不同的计算机环境运行的速度都不一样)*
时间复杂度的计算方式
大O渐进法 ————类似数学里面的函数表达式
// 请计算一下Func1基本操作执行了多少次?
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);
}
在这个例题里面,对于第一个循环来说,循环了N*N次也就是N^2
对于第二个循环就是2*N,2N
第三个就是10次,是常数
用一个函数表达式就是
F ( N ) = N 2 + 2 ∗ N + 10 ; F(N)=N^2+2*N+10; F(N)=N2+2∗N+10;