算法
Cnic.org,开放的网络天书!
算法是指完成一个任务所需要的具体步骤和方法的描述。
不同的算法可能用不同的时间、空间或效率来完成同样的任务。如果一个算法有缺陷,或不适合于这个问题,执行这个算法将不会解决问题。 一个算法的优劣可以用空间复杂度与时间复杂度来衡量。时间复杂度是指完成该算法所需要的时间,空间复杂度是指完成该算法所需要占用的空间(内存大小)。
目录 |
[编辑]
算法的诞生
“算法”一词最早来自公元9世纪波斯数学家比阿勒·霍瓦里松的一本影响深远的著作《代数对话录》。20世纪的英国数学家图灵提出了著名的图灵论点,并抽象出了一台机器,这台机器被我们称之为图灵机。图灵的思想对算法的发展起到了重要的作用。
[编辑]
形式化算法
算法是计算机处理信息的本质,因为计算机程序本质上是一个算法,告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪水或打印学生的成绩单。
一般地,当算法在处理信息时,数据会从输入设备读取,写入输出设备,可能保存起来以供以后使用。
[编辑]
实现算法
[编辑]
例子
这是算法的一个简单的例子。
我们有一串随机数列。我们的目的是找到这个数列中最大的数。如果将数列中的每一个数字看成是一颗豆子的大小,可以将下面的算法形象地称为“捡豆子”:
- 首先将第一颗豆子(数列中的第一个数字)放入口袋中。
- 从第二颗豆子开始检查,直到最后一颗豆子。如果正在检查的豆子比口袋中的还大,则将它捡起放入口袋中,同时丢掉原先的豆子。
- 最后口袋中的豆子就是所有的豆子中最大的一颗。
给定:一个数列“list",以及数列的长度"length(list)"
largest = list[1]
for counter = 2 to length(list):
if list[counter] > largest:
largest = list[counter]
print largest
符号说明:
- = 用于表示赋值。即:右边的值被赋予给左边的变量。
- List[counter]用于表示数列中的第counter项。例如:如果counter的值是5,那么List[counter]表示数列中的第5项。
- <= 用于表示“小于或等于”。
[编辑]
算法设计和分析的基本方法
[编辑]



