实验1-算法的时间复杂性分析
实验报告封面
课程名称:算法分析课程代码: SH3001
任课老师:陈坚强实验指导老师: 陈坚强
实验报告名称:算法的时间复杂性分析
学生姓名:
学号:
教学班:
递交日期:
签收人:
我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行为。我已经保留了这份实验报告的副本。
申明人(签名):
实验报告评语与评分:
评阅老师签名:
实验一算法的时间复杂性分析
一、实验目的
1.掌握算法的计算复杂性概念。
2.掌握算法渐近复杂性的数学表述。
3.掌握用C++语言描述算法的方法。
4.实现具体的编程与上机实验,验证算法的时间复杂性函数。
二、实验环境
Windows XP以上版本的操作系统,Visual C++ 6.0 / VS 2005/2008/2010版编程环境。
三、实验内容
1、求下列函数的渐近表达式
(1)3n2+10n o( n2)
(2) n2/10+2n o( n2)
(3)21+1/n o( )
(4)10 log3n o(n)
2、分析下面算法属于什么功能,并求算法的时间复杂性函数
int factorial(int n)
{
if (n == 0) return 1;
return n*factorial(n-1);
}
n的阶乘
3、算法实现题,要求写出问题的分析过程,然后上机实现算法
统计数字问题:
(1)、问题描述
一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2, (9)
(2)、算法设计
给定表示书的总页码的10 进制整数n (1≤n≤109) 。编程计算书的全部页码中分别用到多少次数字0,1,2, (9)
提示:
1、POW函数
原型:float pow(float X,int Y);
头文件:#include
功能:计算x的y次幂。
2、int weishu(int n); //求位数
int zuigao(int n); //求最高位的数字
int f(int n); //所有n位数中0-9出现的相同次数