分析时间复杂度

37 阅读1分钟

1.背景 今天在总结项目抓取功能按钮的时候,发现代码还可以进行优化,时间复杂度

2.## 常见时间复杂度对比 ``| 复杂度 | 名称 | n=1000时的操作次数 | 直观理解 | | ---------- | ------- | -------------------| --------------- | | O(1) | 常数时间 | 1 | 一次操作,与数据量无关 | | O(log n) | 对数时间 | ~10 | 二分查找 | | O(n) | 线性时间 | 1000 | 遍历一次 | | O(n log n) | 线性对数 | ~10,000 | 快速排序 | | O(n²) | 平方时间 | 1,000,000 | 双层循环 | | O(n³) | 立方时间 | 1,000,000,000 | 三层循环 |

3.实际分析技巧 技巧1:关注最内层循环 技巧2:分开的循环是相加不是相乘 技巧3:数据结构操作复杂度

// List查找:O(n)
list.contains(value);  

// HashSet查找:O(1) 
set.contains(value);

// HashMap查找:O(1)
map.get(key);