一、什么是算法复杂度?
算法进行计算的时候,存储数据需要占用一定的 空间,执行计算需要耗费一定的时间 时间。算法复杂度就是在算法计算过程中对「空间」与「时间」的评价。
解决同一个问题,不同算法所有的空间和时间是不同的,这取决于算法是如何设计的。同样,同一个问题,规模不同时,同一个算法所用的空间和时间也不同。
例如:某排序算法为 100 个数排序和为 1000 个数排序。
所以,一个算法的复杂度是问题规模 N 的函数。
二、时间复杂度
时间复杂度是算法执行计算所花费的时间多少的度量,但是不同的机器计算速度不同,实际的时间很难统计,由此可以通过统计算法执行的语句数来表示时间复杂度。
1. 渐进时间复杂度
随着问题规模 n 的增大,常数部分的影响越来越小:T(n) = 2 n 3 n^3 n3 + 4n + l o g n logn logn + 4;而增长最快的项影响越来越大( n 3 n^3 n3):T(n) = 2 n 3 n^3 n3 + 4n + l o g n logn logn + 4。
渐进时间复杂度只关注增长最快的项:T(n) = O( n 3 n^3 n3),去除常数系数与复杂度小的项。平时说代码的时间复杂度,一般指渐进时间复杂度。
n n n^n n