数据结构&算法
3 月,跳不动了?>>> 在分析算法效率时,经常关注以下两种复杂度: (1)最坏情况复杂度:T worst (n) (2)平均复杂度:T avg (n) 易知T avg (n)<=T worst (n) 注:一般分析最坏情况复杂度,因为平均复杂度不容易找 下表能够比较直观的看出各个复杂度的运行时间 1 2 4 8 16 32 C(常函数) 1 1 1 1 1 1 logn 0 1 2 3 4 5 n 1 2 4 8 16 32 nlogn 0 2 8 24 64 160 n 2 1 4 16 64 256 1024 n 3 1 8 64 512 4096 32768 2 n 2 4 16 256 65536 4294967296 n! 1 2 24 40326 2092278988000 26313×10 33 所以一般情况下避免出现后两种复杂度 下图是几种复杂度的增长速度 (图片来自慕课,陈越姥姥那堂课) 复杂度分析的窍门: 若已知T 1 (n) = O(f 1 (n))和T 2 (n) = O(f 2 (n)),则 T 1 (n) + T 2 (n) = max(O(f 1 (n)),O(f 2 (n))) (就是O(f 1 (n))和O(f 2 (n))的最大值) T 1 (n) × T 2 (n) = O(f 1 (n) × f 2 (n)) for循环的T(n) =