1.介绍
时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。
2.时间复杂度
时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数(数学中带有未知表达式的函数),它定量描述了该算法的运行时间。
3.空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小量度 。这个一般不是很重要。
如果想要了解可以参考http://t.csdnimg.cn/HEQod。
4.大O符号(Big O notation)
- 大O符号(Big O notation)是用于描述函数渐进行为的数学符号。推导大O阶方法:
- 1、用常数1取代运行时间中的所有加法常数。
- 2、在修改后的运行次数函数中,只保留最高阶项。什么意思呢,例如:O(n+1),由于cpu计算得太快了,从而忽略了后面的常数项。
- 3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。
以下是常见复杂度对比
5.举例
void Func(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;
}
这里的Func执行的操作次数:N^2+2*N+10,用大O符号表示为O(N^2)。因为只保留最高阶项。