时间复杂度:
首先要说的是,时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。
当我们面前有多个算法时,我们可以通过计算时间复杂度,判断出哪一个算法在具体执行时花费时间最多和最少。
时间复杂度的几条基本计算规则
1,基本操作,即只有常数项,认为其时间复杂度为O(1),
2,顺序结构,时间复杂度按加法进行计算,
3,循环结构,时间复杂度按乘法进行计算
4,分支结构,时间复杂度取最大值,
5,判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
6,在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度
常见的时间复杂度有:
常数阶O(1),
对数阶O(log2 n),
线性阶O(n),
线性对数阶O(n log2 n),
平方阶O(n^2),
立方阶O(n^3)
k次方阶O(n^K),
指数阶O(2^n)。
随着n的不断增大,时间复杂度不断增大,算法花费时间越多。
空间复杂度-空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。
空间复杂度的概念
类似于时间复杂度的讨论,一个算法的空间复杂度S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。空间复杂度(SpaceComplexity)是对一个算法在运行过程中临时占用存储空间大小的量度。
空间复杂度和时间复杂度的关系
对于一个算法,其时间复杂度和空间复杂度往往是相互影响的。当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间;反之,当追求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。大部分时间我们在完成一个程序时采用空间换时间的策略
算法的时间复杂度和空间复杂度合称为算法的复杂度。
网友评论