在大学期间学编程的时候,简单的问题可以很容易地使用编程解决,例如简单的数学运算和输出语句,到后来随着知识点的深入,面对复杂问题时总是不知道从何下手。
直到后来有一天, 一位前辈告诉我说程序的“灵魂”是算法,只有掌握了算法 ,才能轻松地驾驭程序:
原来程序不是按部就班,正确的做法是选择一种算法去实现功能,这个算法正式解决问题的有力武器,也是对一个项目“下手”的第一步,算法能够告诉我在面对一个应用时用什么思路去实现,有了这个思路,编码工作只需遵循该思路去实现即可,算法是一个程序的编码思路,是程序员解决问题的“指路明灯”。
何为算法,为了理解什么是算法,先看一道有趣的智力题: “烧水泡茶“有如下五道工序:
烧开水
洗茶壶
洗茶杯
拿茶叶
泡茶
烧开水、洗茶壶、洗茶杯、拿茶叶是泡茶的前提;其中烧开水需要15分钟,洗茶壶需要2分钟,洗茶杯需要1分钟,拿茶叶需要1分钟,泡茶需要1分钟。
下面是两种“烧水泡茶”的方法:
方法1:
第一步:烧水
第二步:水烧开后,洗茶具,拿茶叶
第三部:沏茶
方法2:
第一步:烧水
第二步:在烧水的过程中,洗茶具,拿茶叶
第三部:水烧开后沏茶
问题: 比较这两种方法有何不同,并分析哪种方法更优。
上述两种方法都能最终实现“烧水泡茶”的功能,每种方法的3个步骤就是一种“算法”;算法是指在有限步骤内求解某一问题所使用的一组定义明确的规则。
通俗点说,就是计算机解体的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法,前者是推理实现的算法,后者是操作实现的算法。