`
tenght
  • 浏览: 47076 次
社区版块
存档分类
最新评论

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

 
阅读更多

 

引言

 

    这本书的作者对于我们来说也是很熟悉了,在他的CSDN博客上有一句古语:

“无冥冥之志者,无昭昭之明;无惛惛之事者,无赫赫之功。”

    这句话虽是老生常谈,细细品来很是发人深思。

    也是由此,才有了这本书《算法之美——隐匿在数据结构背后的原理(C++版)》的顺利出版吧,另外作者还写有其他的几本书包括出版的和未出版的。我是看了作者在CSDN上的博客,入手了一本关于图像处理的书籍。  

 

学习算法

  

    算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。每个算法都有其存在的意义,深入研究下去,就会发现算法的乐趣无穷。

         许多算法是有难度的,理论很复杂,不容易理解和掌握,这是客观存在的现实。但是我们可以通过提高自身分析问题和解决问题的能力来相对地降低学习难度。从基础来讲,要深入理解数据结构,至少要非常熟练地掌握一种排序算法,各种线性表的插入、删除算法,树的遍历和插入、删除算法,图的遍历算法等等。

 

    然后要多学习、掌握一些常见问题的解决模式,比如穷举算法如何应用,动态规划算法如何应用等等。最后要勤思考,对应已经掌握并解决的算法,要想想为什么用这种方法解决?有没有其他方法?类似的问题怎么办?提高举一反三的能力。

 

算法的乐趣:

    如果你觉得算法比较有意思,比起做那些无聊的项目有意思多了,那你就已经迈出了一大步。读算法书时,要经常手工模拟算法的执行过程,不要怕麻烦,模拟的过程可以对算法的细节有深入的理解,解决问题后,经常心中会油然产生一种难以描述的快感、成就感。

 

    当然,算法也是非常严谨的,记得读大学时算法课第一节课上,老师就给我们画了一个大图,告诉我们遇到一个问题,应该沿着什么样的思路走。遇到一个实际的问题,首先应该把它形式化(Formulation),即用数学的方式将它描述出来。其次,需要观察问题(Observation),即观察问题的结构和性质。这样解决了问题之后,下次再遇到相类似的问题,就会自然而然的站在一个更高的角度来看了,这会让自己心里更有底,更自信!

 

试读:递归—老和尚讲故事

     这本书的试读章节是:递归—老和尚讲故事,首先介绍了递归的概念,然后用汉诺塔问题,传染病问题和八皇后问题分别阐述并实践了递归的两种主要方法:分治法和回溯法。细读下来,作者叙述引经据典,实例浅显易懂,确实是费了心思的。

 

总结

     计算机技术的发展日新月异,最后沉淀下来的就有算法的一席,理想情况下,一本严肃的算法书应该在稳定、宽松的环境下精雕细琢。可是在社会剧烈发展的今天,在日新月异的中国,在人们习惯快餐而不再享受大餐的 快节奏生活中,在微博、微信取代文章、书信的手机网络大潮下,这样的理想环境根本不存在。这本《算法之美——隐匿在数据结构背后的原理(C++版)》可以研读之,将里边的算法精粹读通、读透,变成自己的东西,那对于我们来说也是在算法之路上一个很大的进步。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics