您的位置:首页 > 编程语言

2、编程珠玑笔记二算法

2015-09-13 20:31 141 查看
2、编程珠玑笔记二算法
         本篇名言:“真实与朴实是天才的宝贵品质。 --斯坦尼斯拉夫斯基”

我一直认为程序员花再多时间在数据结构和算法上都不为过,这也是当码农升华为码神的关键。

         算法对软件系统影响非常巨大,蛤蟆工作很多时候是进行性能调优工作对此深有体会,一个稍微少一点的算法在高并发压力的时候表现出来的性能就会非常明显了。

         第二章,作者给我们带来了三个问题以及问题背后的思考。蛤蟆简单汇总并尽量简单描述之。

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48419893

1.  问题一

如下图1所示:



         这个问题作者引入一个被程序员用烂的算法,就是二分法。不管生活还是工作,二分法估计是居家旅行必备神器。

2.  问题二

       


  这个问题有很多解法了,但是最巧秒的莫过于作者左右的方案了。该方案也是Ken Thompson用来实现文本编辑器中行移动的。(Ken Thompson是C语言和UNIX之父)

         首先将问题看成数组ab装换为ba.

         先对a求逆得到arb,然后对b求逆,得到arbr,最后对arbr求逆就得到ba了,翻转代码在时间和空间上都是很搞笑的,所示大师都用的。

 

 

3.  问题三

 


         任何一种考虑单词中给所有字母的排列方法都注定要失败的。

         作者的办法是将单词中的字母按照字母表顺序排序,如deposit的标识就是deiopst,

同理单词dopiest的标识也是deiopst.

         然后见给所有单词按照标识进行顺序排序。

         要找某个单词,主要获得该标识,然后在顺序表中查找即可。

 

 

4.  小结:

本章主要是强调基本操作使得问题简单化。

需要不断解决问题和反思。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: