代码改变世界

复杂度的估计

2014-04-23 23:49  gongti  阅读(299)  评论(0编辑  收藏  举报

(1)对于时间复杂度

通常题目给出的是1秒的运行时限,这也是最常见的时间限制(或最常见的时间限制数量级)
对于该时限,通常,我们所设计的时间复杂度不能超过百万级别,及不能超过一千万。
若算法的时间复杂度是O(n^2),则该n(往往在题目中会给出数据范围),那么该n不应该大于3000.
否则将会到达我们所说的千万数量级复杂度,从而程序运行时间超过题目所给出的用时限定。
因此,可以对自己的程序在最坏情况下的复杂度进行一个估算,假设确定其在百万数量级之内,那么
你的程序一般是不会超过时间限制的。
 
(2)对于空间复杂度
1GB=2^10MB  
1MB=2^10KB
1KB=2^10B
1B =1 Byte(字节) = 8 bit(位)

 

C/C++数据范围速查表:
char         1Byte     -128~+127
short       2Byte      -32767~+32768
unsigned short  2Byte     0~65536
int         4Byte     -2147483648~2147483647(10^9数量级)
unsigned int    4Byte      0~4294947295
long ==int
long long      8Byte      -9223372036854775808 ~ +9223372036854775807(10^18数量级)
double       8Byte      1.7 * 10^308