diff --git a/performance-zh.md b/performance-zh.md index 67baaaf..461ea83 100644 --- a/performance-zh.md +++ b/performance-zh.md @@ -178,7 +178,7 @@ TODO:如何模拟满足的缓存,显示增量成本 基本的复杂类别是: * O(1):字段访问,数组或地图查找 -* O(log n)):二进制搜索 +* O(log n)):二分搜索 * O(n):简单循环 * O(n\*m):嵌套循环 * O(nlogn):分而治之 @@ -186,7 +186,7 @@ TODO:如何模拟满足的缓存,显示增量成本 链接: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,编写“不慢的软件”。别傻了。这应该是你的默认开发模式。如果你知道需要随机访问,请不要选择链接列表。如果你知道需要按顺序遍历,请不要使用地图。需求变化,你不能总是猜测未来。对工作量做出合理的猜测。 @@ -463,4 +463,4 @@ tip.golang.org/doc/diagnostics.html - 3)当心错误 还要关注GitHub上的其他实现:它们可能与你的bug相同(或不同) -https://www.youtube.com/watch?v=8eRx5Wo3xYA http://codecapsule.com/2012/01/18/how-to-implement-a-paper/ \ No newline at end of file +https://www.youtube.com/watch?v=8eRx5Wo3xYA http://codecapsule.com/2012/01/18/how-to-implement-a-paper/