背景简述
当代计算机,以O(n)的复杂度计,若要求1s内完成计算, 则循环次数最多不超过107次。
数据规模与时间复杂度的对应关系
时间复杂度 | 数据规模 |
---|---|
O ( n ) O(n) O(n) | 107 |
O ( n 2 ) O(n^2) O(n2) | 3000 |
O ( n l o g n ) O(nlogn) O(nlogn) | 106 |
O ( f ( n ) ) O(f(n)) O(f(n)) | f − 1 ( 1 0 7 ) f^{-1}(10^7) f−1(107) |
注:1. 时间复杂度中 l o g n log\ n log n默认以2为底,即 l o g 2 n log_2\ n log2 n;
2. 已知时间复杂度求解最大数据规模时,令 f ( n ) = 1 0 7 f(n)=10^7 f(n)=107反解 n n n值即可。
例题
题目来源为2019年09月第十七次CSP认证第一题:
由问题描述知,最简单思路为遍历所有元素即 a i j a_{ij} aij,由9、10号测试点知,数据规模为106,此时使用 O ( n ) O(n) O(n)复杂度的算法可行,而 O ( n 2 ) O(n^2) O(n2)不可行。