不怎么会写,如有错误,可以踢我修改,是代码写的更精确些。
一、实验目的:
掌握算法设计的基本步骤,并能进行时间复杂度分析。
掌握不同算法时间复杂度比较方法。
二、实验环境:
Visual C++ 实验环境
三、实验内容:
(写出主要的内容)
1.分别用穷举法和欧几里德算法实现求两个整数的最大公约数,并比较算法的效率。
代码:
#include<iostream>
#include<time.h> //由于需要比较不同算法在给定不同规模测试数据的情况下的平均运行时间,所以需要引入能对程序运行时间进行计时的函数clock();
using namespace std;
//穷举法
int divisor1 (int a,int b) /*自定义函数求两数的最大公约数*/
{
int temp; /*定义义整型变量*/
temp=(a>b)?b:a; /*采种条件运算表达式求出两个数中的最小值*/
while(temp>0)
{
if (a%temp==0&&b%temp==0) /*只要找到一个数能同时被a,b所整除,则中止循环*/
break;
temp--; /*如不满足if条件则变量自减,直到能被a,b所整除*/
}
return temp;//返回满足条件的数到主函数处
}
//欧几里德法
int divisor2 (int a,int b) //自定义函数求两数的最大公约数
{
int temp; //定义整型变量
if(a<b) //通过比较求出两个数中的最大值和最小值
{
temp=a;a=b;b=temp; //设置中间变量进行两数交换
}
while(b!=0) //通过循环求两数的余数,直到余数为0
{
temp=a%b;
a=b; //变量数值交换
b=temp;
}
return (a); //返回最大公约数到调用函数处
}
int main()
{
clock_t start, stop; //clock_t是clock()函数返回的变量类型
double duration; //记录被测函数的运行时间,以秒为单位
int a,b,temp;
cout<<"please