复杂度分为两大部分:时间复杂度和空间复杂度
时间复杂度:是度量算法执行的时间长短或者说是程序执行的次数。
详细说明:
一个算法,处理n条数据需要的时间可以用表达式:a*n+b来表示的话,称它的时间复杂度为O(n),
也就是说,100条数据需要1秒的话,1000条数据需要10s。
如果是用表达式:a*n*n+b*n+c的话,复杂度为O(n的平方),这样100条1秒,1000条就要100s了。
0(0)表达式为a*(n的0次方)+b,也就是个常数。这样无论100还是1000条都只需1秒。
for(i=0;i<10;i++;){
for(j=0;j<10;j++){
}
}
这样时间复杂度为o(n的平方)
如果j里面再有一个k的循环则为o(n的三次方)
空间复杂度:描述的是规模与存储空间的关系。
一个算法所需存储空间包含三个方面、
1.算法本身的存储空间
2.输入数据的存储空间
3.算法在运行过程中临时占用的存储空间。
如果额外空间相对于输入数据量来说是个常数,则称此算法是原地工作。