算法改变世界——《算法之美——隐匿在数据结构背后的原理(C++版)》

东风玖哥

2016-10-13

所谓算法,就是隐匿在数据结构后背后的原理,在开发中好的算法可以降低时间复杂度提升可复用性。《算法之美——隐匿在数据结构背后的原理(C++版)》一书围绕算法与数据结构这个话题,用汉诺塔问题和八皇后问题等22个经典算法问题循序渐进、深入浅出地介绍了现代计算机技术中常用的45个经典算法。读后让人醍醐灌顶,茅塞顿开,并感觉相见恨晚。

这本书的第六章《递归——老和尚讲故事》写的很好,首先介绍了递归的概念,然后用汉诺塔问题,传染病问题和八皇后问题分别阐述并实践了递归的两种思想——分治和回溯。

我是一个不会用NDK的Android工程师,C++的水平见笑大方,但是算法的思想是想通的,我读了左老师对递归的见解后感觉醍醐灌顶,当头棒喝,马上写了一个遍历整个界面并取消所有RadioButton点击事件的方法:

private void banClickable(ViewGroup radioGroup){ for (int i = 0;i<radioGroup.getChildCount();i++){ View v = radioGroup.getChildAt(i); if ( v instanceof RadioButton){ v.setEnabled(false); } if ( v instanceof ViewGroup){ banClickable((ViewGroup) v); } } }

在这个一共15个RadioButton的界面里分别去掉每一个的点击事件只需要一分钟,写这个方法需要十分钟。但是如果RadioButton足够多,《算法之美——隐匿在数据结构背后的原理(C++版)》教我的递归算法之于笨方法的效率不亚于雕版印刷术之于手抄的效率,而且能大大减少代码量,增加可维护性。

我还有一本算法书《编程之美》,这两本书都有大量算法案例。不同点在于《编程之美》侧重于C的特性和在白板上手写伪代码(面试算法),而《算法之美》则详细收录了大量可以被改写成Java的C++例题来提升读者实际工作中的编程能力。

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    5417 735 3 7
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    3299 36 0 1
  • czk 2017-07-29
    5866 28 0 1

推荐用户