算法是任何一段定义好的步骤,它把一些值或者值域作为输入,处理后把某个值或者值域作为输出,而算法就是把输入转换成输出的一系列计算步骤。
我们也可把算法看成解决具体计算问题的工具。通常描述问题的语句指定需要的输入/输出之间的关系。而算法描述了具体的计算步骤来构建输入/输出之间的关系。
举个例子,我们需要把一系列数字以非递减的顺序排列。该问题在实际中频繁出现,成为许多标准设计技巧和分析工具的肥沃土壤。以下是排序问题的正式定义:
.输入:n个数列:a1,a2,...,an.
.输出:序列(a1‘,a2‘,...,an‘),且a1‘≤a2‘≤...≤an‘.
排序问题是计算机科学中的基本操作(许多程序把它作为一个中间的步骤),因此程序员开发出了大量的优秀排序算法。哪一种算法最适合给定的应用取决于参加排序的项的数目,项已经排序的程度,项值的可能限制,所使用的存储设备的种类:主存,磁盘,或磁带。
对于每一个输入实例,算法都以正确的输出结束,我们就称该算法是正确的。我们说一个正确的算法解决了给定的计算问题。而一个不正确的算法对于某些输入实例根本终止不了,或者终止了但是结果不是所期待的。与我们所期望的相反,如果不正确算法的错误率可控制的话,有时候它有用处。一般地,我们仅仅关注正确的算法。
算法可用英语指定为一段程序,或者指定为一个硬件设计。唯一的条件是所遵循的规范必须提供计算过程的一个准确描述。
原文地址:http://www.cnblogs.com/williamcai/p/3027610.html