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);