1、空间复杂度是指算法在计算机内执行时所需存储空间的度量
2、一般情况下,算法中基本 *** 作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。
按数量级递增排列,常见的时间复杂度有:
常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,
k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
编程没有玄学都是科学,很正常,肯定还是程序有bug,首先debug模式下编译器会自动处理些事情,比如帮你做初始化或者申请一些内存,使本来有bug的程序凑巧可以运行,又或者,会放慢你的代码执行速度从而绕过问题,我今天刚遇到一个偶发bug,release执行10次会崩溃1次,debug版毫无问题,最后找到是一段内存申请代码的问题,解决后release测试几十次,没崩溃。以前还遇到过一个偶发bug,也是debug版毫无问题,最后是编译器生成的析构函数出问题,调整下变量声明的次序就解决了,很神奇,但都是很普通的bug。
这一般都跟申请内存或者指针变量方面的问题有关。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)