算法复杂度分为时间复杂度和空间复杂度。整个算法的执行时间与基本操作重复执行的次数成正比
其作用: 时间复杂度是指执行算法所需要的计算工作量;
而空间复杂度是指执行这个算法所需要的内存空间。
(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度。)
时间复杂度: 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。、
1. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))
2。 ,容易计算的方法是:看看有几重for循环, 只有一重则时间复杂度为O(n),二重则为O(n^2),依此类推,如果有二分则为O(logn),二分例如快速幂、二分查找,如果一个for循环套一个二分,那么时间复杂度则为O(nlogn)。
空间复杂度:
一个
程序的
空间复杂度是指运行完一个程序所需内存的大小。利用
程序的
空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。一个
程序执行时除了需要
存储空间和存储本身所使用的指令、常数、
变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。
程序执行时所需
存储空间包括以下两部分。
S(n)=O(f(n))
其中n为问题的规模,S(n)表示
空间复杂度。