数据结构与算法
一 算法分析:是理论研究,是关于计算机程序性能和资源利用的研究,特别关注性能。
在程序设计方面,什么是比性能更重要的呢?
例如:正确性,简洁,可维护性,成本,稳定性,软件的健壮性,特性(功能性),模块化(只需要修改局部的代码,避免修改全部代码,以便于影响功能中的简单变化),安全性,可扩展性,用户体验(为什么人们更青睐于苹果OS而不是Windows?)
以上提到的问题都比性能更加重要,如果算法和性能都不重要?为什么我们还要学习呢?
第一个层面的原因:通常情况下性能的好坏,直接决定着可行还是不可行,例如,对于实时的需求,如果程序不够快,就只能表示它不可行,或者如果它占用过多的内存,也只能表示它不可行,所以,算法总是处于解决问题的最前沿,如果你正在实现的是十几年前人们已经实现的事,那么从某种意义上来说,性能就不那么重要,但是如果你正在积极尝试其他人没有成功的事情,之所以别人没有成功,是因为太消耗时间,不具备可扩展的空间,那么程序的性能就显得十分重要,算法能够将不可行变成可行。
第二个层面的原因:算法是一种描述程序行为的语言,其实它也已经形成了一种语言,一种已经广泛应用于计算机科学领域,已经被所有实践者所采用的理论语言,它是一种让程序最为简洁的思考方式,性能所扮演的角色,就如同经济中的货币一样,可能水和食物的作用比钞票更加重要,但是,你仍然需要用钞票去购买,同样的,性能是确保良好的用户体验的前提,也是安全的保障,这就是为什么性能处于最底层的原因。
第三个层面的原因:算法充满了乐趣,我们为什么喜欢跑车,赛马......?因为速度是我们最原始的渴望!