1、大O记号(big‐O notation)
性质: 常系数可忽略:O(f(n)) = O(c × f(n))
低次项可忽略:O(n^a + n^b) = O(n^a), a > b > 0
常数(constant function)
2 = 2010 = 2010*2010 = 20102010 = O(1)
这类算法的效率最高
对数 O(logn):lnn | lgn | log100n | log2010n
常底数无所谓
∀ 常数 a, b > 0,lna / lnb = logab = O(1)
∀ n > 0 都有 logan = logab × logbn = O(logbn),反之亦然
常数次幂无所谓
∀ 常数 c > 0,log(n^c) = c × logn = O(logn)
这类算法非常有效
复杂度无限接近于常数
2、封底估算
3、memset()使用注意
初始化int类型的数组
只能初始化为 -1 和 0
初始化bool类型的数组
只能初始化为 false 和true
初始化char类型的数组
可初始化为任意的ASCII码字符
4、数据类型的取值范围
int -2147483648~2147483647 (-2e+9 ~ 2e+9)
unsigned int 0~4294967295 (0 ~ 4e+9)
long long
-9223372036854775808 ~ 9223372036854775807 (-9e+18 ~ 9e+18)
unsigned long long 0 ~ 18446744073709551615 (0 ~ 1e+19)
__int64
-9223372036854775808 ~ 9223372036854775807 (-9e+18 ~ 9e+18)
unsigned __int64 0 ~ 18446744073709551615 (0 ~ 1e+19)
__int64与long long 都是在32位平台开始使用的64位整数的数据类型,在存储方式和使用方式上没有区别
两者的区别在于,它们命名的发起人不同,支持的平台不同
long long这个数据类型,是UNIX平台发起并支持的
而__int64是微软从win95(VC6)开始发起并支持的
在老的windows开发平台下(如VC6),不识别long long
而老的UNIX,