commit
c5e0ff0418
@ -178,7 +178,7 @@ TODO:如何模拟满足的缓存,显示增量成本
|
|||||||
基本的复杂类别是:
|
基本的复杂类别是:
|
||||||
|
|
||||||
* O(1):字段访问,数组或地图查找
|
* O(1):字段访问,数组或地图查找
|
||||||
* O(log n)):二进制搜索
|
* O(log n)):二分搜索
|
||||||
* O(n):简单循环
|
* O(n):简单循环
|
||||||
* O(n\*m):嵌套循环
|
* O(n\*m):嵌套循环
|
||||||
* O(nlogn):分而治之
|
* O(nlogn):分而治之
|
||||||
@ -186,7 +186,7 @@ TODO:如何模拟满足的缓存,显示增量成本
|
|||||||
|
|
||||||
链接:bigocheatsheet.com
|
链接:bigocheatsheet.com
|
||||||
|
|
||||||
假设你需要搜索未分类的数据集。“我应该用二进制搜索”,你知道一个二进制搜索O(log n)比O(n)线性扫描快。但是,二分查找需要对数据进行排序,这意味着你需要先对它进行排序,这将花费O(n log n)时间。如果你正在进行大量搜索,那么分类的前期成本将会得到回报。另一方面,如果你主要做查询,也许有一个数组是错误的选择,你最好支付O(1)查找地图的代价。
|
假设你需要搜索未分类的数据集。“我应该用二分搜索”,你知道一个二分搜索O(log n)比O(n)线性扫描快。但是,二分查找需要对数据进行排序,这意味着你需要先对它进行排序,这将花费O(n log n)时间。如果你正在进行大量搜索,那么分类的前期成本将会得到回报。另一方面,如果你主要做查询,也许有一个数组是错误的选择,你最好支付O(1)查找地图的代价。
|
||||||
|
|
||||||
选择最简单的合理数据结构并继续。CS 101,编写“不慢的软件”。别傻了。这应该是你的默认开发模式。如果你知道需要随机访问,请不要选择链接列表。如果你知道需要按顺序遍历,请不要使用地图。需求变化,你不能总是猜测未来。对工作量做出合理的猜测。
|
选择最简单的合理数据结构并继续。CS 101,编写“不慢的软件”。别傻了。这应该是你的默认开发模式。如果你知道需要随机访问,请不要选择链接列表。如果你知道需要按顺序遍历,请不要使用地图。需求变化,你不能总是猜测未来。对工作量做出合理的猜测。
|
||||||
|
|
||||||
@ -463,4 +463,4 @@ tip.golang.org/doc/diagnostics.html
|
|||||||
- 3)当心错误
|
- 3)当心错误
|
||||||
|
|
||||||
还要关注GitHub上的其他实现:它们可能与你的bug相同(或不同)
|
还要关注GitHub上的其他实现:它们可能与你的bug相同(或不同)
|
||||||
https://www.youtube.com/watch?v=8eRx5Wo3xYA http://codecapsule.com/2012/01/18/how-to-implement-a-paper/
|
https://www.youtube.com/watch?v=8eRx5Wo3xYA http://codecapsule.com/2012/01/18/how-to-implement-a-paper/
|
||||||
|
Loading…
Reference in New Issue
Block a user