算法和程序的联系:
1.算法是解决问题的步骤,程序是算法的代码实现,算法要依靠程序来完成功能,程序需要算法作为灵魂。
2.程序是结果,算法是手段,同样编写一个功能的程序,使用不同的算法可以让程序的体积、效率差很多,所以算法是编程的精华所在。
3.算法是程序设计的核心,算法的好坏很大程度上决定了一个程序的效率。
一个好的算法可以降低程序运行的时间复杂度和空间复杂度,先选出一个好的算法,再配合以一种适宜的数据结构,这样程序的效率会大大提高。
4.算法和程序都是指令的有限序列 ,但是程序是算法,而算法不一定是程序。
区别:
1.在语言描述上,程序必须是用规定的程序设计语言来写,而算法很随意。
2.在执行时间上,算法所描述的步骤一定是有限的,而程序可以无限地执行下去,算法是对特定问题求解步骤的描述,是指令的有限序列。
程序包含算法,算法是程序的灵魂,一个需要实现特定功能的程序,实现它的算法有很多种,算法的优劣决定着程序的好坏。
程序员很熟练的掌握了程序设计语言的语法,进行程序设计,软件开发的时候就是设计好的算法,加上软件工程的理论才能做出较好的系统。
算法是指解决问题的一种方法或一个过程。
算法是若干指令的有穷序列,满足性质:
1.输入:由外部提供的量作为算法的输入。
2.输出:算法产生至少一个量作为输出。
3.确定性:组成算法的每条指令是清晰,无歧义的。
4.有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。
程序是算法用某种程序设计语言的具体实现。
程序可以不满足算法的性质。
例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。
操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。
该子程序得到输出结果后便终止。
算法有有穷性能,程序可以没有,算法是通过编程来体现的算法是程序设计的一部分,一般都是要先设计算法,再进行编程,调试、运行的补充,算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。
不同的算法可能用不同的时间、空间或效率来完成同样的任务。
一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。
一个状态到另一个状态的转移不一定是确定的。
随机化算法在内的一些算法,包含了一些随机输入。