原文地址,转载请注明出处:http://blog.csdn.net/anzelin_ruc/article/details/8180831 ©安泽林
1.废话在前
最近又刚刚结束了一年一度的校园招聘,从师兄们那里打听到的情况多是笔试面试经常出一些算法题来考,这些算法题根据公司的不同而不同,但大多大公司更倾向于出ACM类型的要求有很强算法能力的题。不免觉得自己算法又太差,因此就下定决心好好学习和研究算法,所谓研究算法不敢说是创新算法,而更多的是学习和改进已有经典算法。废话不多说进入今年的正题,今天只是算法开篇,首先大抵和教科书般一样空洞的解释下算法相关的内容。将我所有的废话在这篇没有技术含量但不得不写的开篇中吐完。2.什么是算法
3.算法的分类
基本算法、数据结构相关算法、几何算法、图论算法、规划算法、数值分析算法、加密/解密算法、排序算法、查找算法、并行算法、数论算法。
从算法的思路来说又可以分为:递推算法、递归算法、穷举算法、贪婪算法、分治算法、动态规划算法、迭代算法等。
从确定性上来分,又分为确定性算法和不确定性算法。我在这里讨论的和接下来将要讨论的都是确定性算法。
4.算法的性能评价
我们知道计算机系统中衡量一个算法的优劣一般的从两个方面考虑,其一是时间,其二就是空间。一个好的算法体现在它占用的存储资源少,执行的效率高,所谓占用少的存储资源就是具有较小的空间复杂度,而执行效率高就是占用较少的CPU时间来执行。所以我们总会听到下面两个评价算法的指标:1.时间复杂度,2.空间复杂度。
我们总是希望我们的算法占用最少的系统资源,在最短的时间内执行完毕,虽然一般的想要获得快速的执行效率就要牺牲存储容量,而要节省空间往往导致执行效率的下降,但是我们依然可以通过合适的算法设计达到相对好的效果。
下一篇博文将写几个适用于不同算法思路的问题并举例说明相关算法。剩下的所有篇幅都会以应用角度来描述对应算法。由于本人并非数学出身,而是一个不折不扣的虽计算机出身但不怕丢人的说,是完全的不懂数学的文盲,故大抵只能明白一些基本的问题及数据结构、查找、排序、数值分析等方面的算法。其他类型的可能会涉及部分,但不会太多。另外,本人最近在做数据压缩方面的项目,故在数据压缩算法方面可能会深入分析。
本文博客园地址:http://www.cnblogs.com/anzelin/archive/2012/11/15/2770829.html
个人博客地址:http://sunny614.sinaapp.com/?p=53