一、算法设计与分析

算法是指解决问题的一种方法或一个过程,算法是若干指令的有穷序列,满足性质:

(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);    /*  输出求解结果 */
}

程序是算法用某种程序设计语言的具体实现,程序可以不满足算法的性质

例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法


猜你喜欢

转载自blog.csdn.net/qq_38855717/article/details/81042913