时间复杂度与空间复杂度

* author:conowen@大钟

* E-mail:[email protected]

复杂度

算法的优劣使用时间复杂度来考量算法的运行时间,使用空间复杂度来考量算法的内存占用。

时间复杂度

    算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

例如f(n) = 2*n^2+3n,在n特别大的时候,第二项3n比起第一项n^2要小很多。于是对于这个函数,f(n)在n->∞的情况下与n^2将近等价,记作f(n)~n^2,忽略低阶项3n和首项系数2。

在 大O符号表示法中,时间复杂度的公式是: T(n) = O( f(n) ),其中f(n) 表示每行代码执行次数之和,而 O 表示正比例关系,这个公式的全称是:算法的渐进时间复杂度。即表示n趋近无穷时的情况。

常用时间复杂度

常数阶O(1) 如哈希表

线性阶O(n)

平方阶O(n²) 如冒泡排序

对数阶O(logn) 如二分法

线性对数阶O(nlogn)


空间复杂度

表示算法的内存占用多少,也是使用大O符号表示法,定义同上。空间复杂度比较常用的有:O(1)、O(n)、O(n²)。

你可能感兴趣的:(时间复杂度与空间复杂度)