算法设计与分析实验报告三篇(共17页).doc
《算法设计与分析实验报告三篇(共17页).doc》由会员分享,可在线阅读,更多相关《算法设计与分析实验报告三篇(共17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上算法设计与分析实验报告一实验名称 统计数字问题 评分 实验日期 2014 年 11 月 15 日 指导教师 姓名 专业班级 学号 一.实验要求1、掌握算法的计算复杂性概念。2、掌握算法渐近复杂性的数学表述。3、掌握用C+语言描述算法的方法。4实现具体的编程与上机实验,验证算法的时间复杂性函数。二.实验内容 统计数字问题1、问题描述一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0
2、,1, 2,9。2、编程任务给定表示书的总页码的10 进制整数n (1n109) 。编程计算书的全部页码中分别用到多少次数字0,1,2,9。三.程序算法将页码数除以10,得到一个整数商和余数,商就代表页码数减余数外有多少个19作为个位数,余数代表有1余数本身这么多个数作为剩余的个位数,此外,商还代表1商本身这些数出现了10次,余数还代表剩余的没有计算的商的大小的数的个数。把这些结果统计起来即可。四.程序代码#includeint s10; /记录09出现的次数int a10; /ai记录n位数的规律void sum(int n,int l,int m) if(m=1)int zero=1; f
3、or(int i=0;i=l;i+) /去除前缀0 s0-=zero; zero*=10; if(n10) for(int i=0;i=n;i+) si+=1; return; /位数为1位时,出现次数加1/位数大于1时的出现次数 for(int t=1;t=l;t+)/计算规律f(n)=n*10(n-1)m=1;int i;for(i=1;it;i+)m=m*10;at=t*m;int zero=1; for(int i=0;il;i+) zero*= 10; /求出输入数为10的n次方 int yushu=n%zero; /求出最高位以后的数 int zuigao=n/zero; /求出最
4、高位zuigao for(i=0;izuigao;i+) si+=zero; /求出0zuigao-1位的数的出现次数 for(i=0;iyushu) i+; s0+=i*(yushu+1);/补回因作模操作丢失的0 szuigao+=(yushu+1);/补回最高位丢失的数目 sum(yushu,l-i-1,m+1);/处理余位数void main() int i,m,n,N,l;coutN;cout=10;i+) n/=10; /求出N的位数n-1 l=i; sum(N,l,1); for(i=0; i10;i+) cout 数字i出现了:si次n; 五.程序调试中的问题调试过程,页码出现
5、报错。六.实验结果算法设计与分析实验报告二实验名称 分治法实现归并排序算法 评分 实验日期 2014 年 11 月 26 日 指导教师 姓名 专业班级 学号 一.实验要求1.了解用分治法求解的问题:当要求解一个输入规模为n,且n的取值相当大的问题时,如果问题可以分成k个不同子集合,得到k个不同的可独立求解的子问题,其中1kn,而且子问题与原问题性质相同,原问题的解可由这些子问题的解合并得出。那末,对于这类问题分治法是十分有效的。2.掌握分治法的一般控制流程。DanC(p,q) global n,A1:n; integer m,p,q; / 1pqn if Small(p,q) then ret
6、urn G(p,q); else m=Divide(p,q); / pmq return Combine(DanC(p,m),DanC(m+1,q); endifend DanC3实现典型的分治算法的编程与上机实验,验证算法的时间复杂性函数。二.实验内容1.编程实现归并排序算法,程序中加入比较次数的计数功能,输出排序结果和比较次数。2.输入10组相同的数据,验证排序结果和完成排序的比较次数。3.与复杂性函数所计算的比较次数比较。4.用表格列出比较结果。5.给出文字分析。三.程序算法1. 归并排序算法procedure MERGESORT(low,high) /A(low;high)是一个全程数
7、组,它含有high-low+10个待排序的元素/ integer low,high; if lowmid then for kj to high do /处理剩余的元素/ B(i) A(k);ii+1 repeat else for kh to mid do B(i) A(k);ii+1 repeat endif 将已归并的集合复制到A end MERGE2. 快速排序算法QuickSort(p,q) /将数组A1:n中的元素 Ap, Ap+1, , Aq按不降次序排列, 并假定An+1是一个确定的、且大于 A1:n中所有的数。/ int p,q; global n, A1:n; if pq
8、then j=Partition(p, q+1); / 划分后j成为划分元素的位置 QuickSort(p,j-1); QuickSort(j+1,q); endif end QuickSortprocedure PARTITION(m,p) /退出过程时,p带着划分元素所在的下标位置。/ integer m,p,i;global A(m:p-1) vA(m);im /A(m)是划分元素/ loop loop ii+1 until A(i)v repeat /i由左向右移/ loop pp-1 until A(p)v repeat /p由右向左移/ if ip then call INTERC
9、HANGE(A(i),A(p) /A(i)和A(p)换位/ else exit endif repeat A(m) A(p);A(p) v /划分元素在位置p/ End PARTITION四.程序代码1. 归并排序#include#include#include#include#define M 11typedef int KeyType;typedef int ElemType;struct recKeyType key;ElemType data; ;typedef rec sqlistM;class guibingpublic:guibing(sqlist b)for(int i=0;i
10、M;i+)ri=bi;void output(sqlist r,int n)for(int i=0;in;i+)coutsetw(4)ri.key;coutendl;void xuanze(sqlist b,int m,int n)int i,j,k;for(i=m;in-1;i+)k=i;for(j=i;jbj.key) k=j;if(k!=i)rec temp=bk;bk=bi;bi=temp;void merge(int l,int m,int h,sqlist r2)xuanze(r,l,m);xuanze(r,m,h);output(r,M);int i,j,k;k=i=l;for(
11、j=m;im&jh;k+)if(ri.key=rj.key)r2k=ri;i+;elser2k=rj;j+;output(r2,M);while(jh)r2k=rj;j+;k+;while(i=m)r2k=ri;i+;k+;output(r2,M);private:sqlist r;void main()coutguibingfa1运行结果:n;sqlist a,b;int i,j=0,k=M/2,n=M;srand(time(0);for(i=0;iM;i+)ai.key=rand()%80;bi.key=0;guibing gx(a);cout排序前数组:n;gx.output(a,M);
12、cout数组排序过程演示:n;gx.merge(j,k,n,b);cout排序后数组:n;gx.output(b,M);cin.get();2. 快速排序#include#include#include#include#define MAXI 10typedef int KeyType;typedef int ElemType;struct recKeyType key;ElemType data; ;typedef rec sqlistMAXI;class kuaisupublic:kuaisu(sqlist a,int m):n(m)for(int i=0;in;i+) bi=ai; vo
13、id quicksort(int s,int t)int i;if(st)i=part(s,t);quicksort(s,i-1);quicksort(i+1,t);else return;int part(int s,int t)int i,j;rec p;i=s;j=t;p=bs;while(ij)while(i=p.key)j-;bi=bj;while(ij&bi.key=p.key)i+;bj=bi;bi=p;output();return i;void output()for(int i=0;in;i+)coutsetw(4)bi.key;coutendl;private:sqlis
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 分析 实验 报告 17
限制150内