一.算法的概念
二.产生算法
三.算法本身
四.检验算法
一.算法的概念
算法的概念"算法是定义在一个可终止过程的一组有序的,无歧义的,可执行的步骤"
从中可以得出算法的特点:
1.可终止(有穷)
2.可执行,例如列举所有正数,这件事就不可执行
3.无歧义,必须有明确的条件,会导致哪种后果或哪几种后果由条件可以明确知道
4.有序性
算法就是解决问题的步骤。
程序是算法的物质性表示,而进程是程序的执行,比如某一阶段执行某一段程序就是一个进程。
二.算法的表示
1.程序设计语言
计算机程序中的语言(语法和语义的集合)是程序设计语言,数学证明公式中的语言就是数学用于(∠,°,∵)等等。
2.伪程序
三.算法本身
1.求解问题的过程有四步骤:
1)理解问题
2)设计解决问题的方法
3)实行方法
4)从正确性和是否有潜力成为解决其他问题两方面进行评估
在以上这个过程中,如果第四步评估此方法是错误时,就获得了对问题的更深一步的理解,要获得算法,就从第二步再开始。所以就出现一个疑问,能否避免错误,直接完成一次这四个步骤就成功呢?也就是在解决问题之前完全理解问题呢?解决问题与理解问题之间有两个不规则性。
1)解决一步问题理解一步问题,到解决最后一步问题时才最终明白这个问题。
例如:A让B猜他的三个儿子的年龄。A告诉B他的三个儿子的年龄的积是36,B想了想问再有什么条件吗,A告诉了B三个儿子的年龄和。B想了想再问,再有什么条件吗?A说他大儿子会弹钢琴。
2)我们解决问题时的灵光一现。当我们解决一个问题没有解决时,去干其他事,在干其他事的时候突然想到那个问题的答案。
2.如何入门(这句话的意思是说怎么开始解决问题的第一步)
入门的方法:
1)已知结果,逆向推导
2)将大问题划分成小模块,而这些小模块有已经想出来解决的算法
3)将大问题划分成小问题,再划分,知道可以解决为止(自顶向下)
4)从小问题着手,一步一步往上走(自底向上)
通常,第三种方法和第四步方法都是结合的来的。
四.算法举例
1.迭代
迭代所相关联知识:1.顺序搜索,2.循环(while...do和repeat...until)3.插入排序,4.选择排序,5.冒泡排序
2.递归
二分搜索法。
递归控制和循环控制应该都包含三个条件:1.初始条件,2.修改,3.终止
五.检验算法
检验算法从两方面进行,一个是算法的验证,一个是算法的确认。算法的验证是算法在执行过程中是否按照前面所设计的进行,是对过程的检验。而算法的确认是指对算法本身的正确性,有效性的检验,是对结果的检验。
算法的有效性比如说插入排序算法和二分搜索算法的比较次数的有效性。插入排序算法最多比较n²-n/4次,而二分搜索比较lgn次(lg以2为底)。