算法是指解决问题的一种方法或一个过程,算法是若干指令的有穷序列,满足性质:
(1)输入:由外部提供的量作为算法的输入
(2)输出:算法产生至少一个量作为输出
(3)确定性:组成算法的每条指令是清晰、无歧义的
(4)有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的
算法是问题的程序化解决方案,一个问题可以设计不同的算法来求解,同一个算法可以采用不同的形式来描述:
*描述算法可以有多种方式,如自然语言方式、流程图方式、伪代码方式、计算机语言表示方式与表格方式等。
*当一个算法使用计算机程序语言描述时,就是程序。
算法描述举例:
求两个整数a,b(a>b)的最大公约数的欧几里得算法
(1)a除以b得余数r,若r=0,则b为所求的最大公约数
(2)若r不为0,以b为a,r为b,继续(1)
注意:任意两整数之间总存在最大公约数,上述辗转相除过程中余数逐步变小,相除过程总会结束。
#include<stdio.h>
void main()
{ long a,b,c,r;
printf("请输入整数a,b: ");
scanf("%ld,%ld",&a,&b); /* 输入整数a,b */
printf("(%ld,%ld)",a,b);
if(a<b)
{c=a;a=b;b=c;} /* 交换a,b ,确保a>b*/
r=a%b;
while(r!=0)
{a=b;b=r; /* 实施"辗转相除" */
r=a%b;
}
printf("=%ld\n",b); /* 输出求解结果 */
}
程序是算法用某种程序设计语言的具体实现,程序可以不满足算法的性质
例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法