2、编程珠玑笔记二算法
2015-09-13 20:31
141 查看
2、编程珠玑笔记二算法
本篇名言:“真实与朴实是天才的宝贵品质。 --斯坦尼斯拉夫斯基”
我一直认为程序员花再多时间在数据结构和算法上都不为过,这也是当码农升华为码神的关键。
算法对软件系统影响非常巨大,蛤蟆工作很多时候是进行性能调优工作对此深有体会,一个稍微少一点的算法在高并发压力的时候表现出来的性能就会非常明显了。
第二章,作者给我们带来了三个问题以及问题背后的思考。蛤蟆简单汇总并尽量简单描述之。
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48419893
这个问题作者引入一个被程序员用烂的算法,就是二分法。不管生活还是工作,二分法估计是居家旅行必备神器。
这个问题有很多解法了,但是最巧秒的莫过于作者左右的方案了。该方案也是Ken Thompson用来实现文本编辑器中行移动的。(Ken Thompson是C语言和UNIX之父)
首先将问题看成数组ab装换为ba.
先对a求逆得到arb,然后对b求逆,得到arbr,最后对arbr求逆就得到ba了,翻转代码在时间和空间上都是很搞笑的,所示大师都用的。
任何一种考虑单词中给所有字母的排列方法都注定要失败的。
作者的办法是将单词中的字母按照字母表顺序排序,如deposit的标识就是deiopst,
同理单词dopiest的标识也是deiopst.
然后见给所有单词按照标识进行顺序排序。
要找某个单词,主要获得该标识,然后在顺序表中查找即可。
需要不断解决问题和反思。
本篇名言:“真实与朴实是天才的宝贵品质。 --斯坦尼斯拉夫斯基”
我一直认为程序员花再多时间在数据结构和算法上都不为过,这也是当码农升华为码神的关键。
算法对软件系统影响非常巨大,蛤蟆工作很多时候是进行性能调优工作对此深有体会,一个稍微少一点的算法在高并发压力的时候表现出来的性能就会非常明显了。
第二章,作者给我们带来了三个问题以及问题背后的思考。蛤蟆简单汇总并尽量简单描述之。
欢迎转载,转载请标明出处: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. 小结:
本章主要是强调基本操作使得问题简单化。需要不断解决问题和反思。
相关文章推荐
- 拦截器的应用
- Effective C++——条款36(第6章)
- 面向过程和面向对象编程
- java集合TreeSet的两种排序方式
- Struts2自定义类型转换器分为局部类型转换器和全局类型转换器
- windows下面安装Python和pip终极教程
- C++Primer Plus 第九章-存储持续性、作用域和链接性
- javaSwing组件连接SQLite数据库
- 用javaEE做连接数据库的操作时,提示找不到数据库驱动相应的类
- Java基础(二)
- vsftpd
- 【C/C++学院】0802-链式栈/链表队列以及优先队列/封装链表库
- 如何设置Java虚拟机内存以适应大程序的装载
- Java初体验
- Java运行环境绿色部署配置
- 我对python线程池的理解
- java中的Random类
- 求素数和的算法:很神奇,求大神解释一下代码.
- 《Google Java编程风格指南》代码注释与编码规范~总结
- eclipse里面调试maven插件