Rob Pike 的教诲!

1你无法断定程序会在什么地方耗费运行时间。瓶颈经常出现在意想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在。


2估量。在你没有对代码进行估量,特别是没有找到最耗时的那部分之前,别去优化速度。


3花哨的算法在n很小时通常很慢,而n通常很小。花哨算法的常数复杂度很大。除非你确定n总是很大,否则不要用花哨算法(即使n很大,也优先考虑原则2)。比如,解决常见问题时,最简单的树--二叉树(binary tree),总是比那些复杂的树(AVL树,伸展树(splay tree)和红黑树,B-树(B-tree),多叉树(trie))来的更高。

4花哨的算法比简单算法更容易出bug,更难实现。尽量使用简单的算法配合简单的数据结构。只要掌握了数据结构中的四大法宝,就可以包打天下,它们是:array, linked list, hash table, binary tree。这四大法宝可不是各自为战的,灵活结合才能游刃有余。比如,一个用hash table组织的symbol table, 其中是一个个由字符型array构成的linked list。


5以数据为中心。如果已经选择了正确的数据结构并且把一切都组织得井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。


6没有原则6。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值