数据结构与算法设计课程设计.docx
- 文档编号:9399882
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:19.72KB
数据结构与算法设计课程设计.docx
《数据结构与算法设计课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构与算法设计课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
数据结构与算法设计课程设计
内江师范学院
数据结构与算法设计课程设计
实验报告册
编制算法设计课题组审定曾意
专业:
信息与计算科学
班级:
2012级6班
学号:
20120241242
姓名:
杨浩天
数学与信息科学学院
2014年9月
说明
1.学生在做实验之前必须要准备实验,主要包括预习与本次实验相关的理论知识,熟练与本次实验相关的软件操作,收集整理相关的实验参考资料,要求学生在做实验时能带上充足的参考资料;若准备不充分,则学生不得参加本次实验,不得书写实验报告;
2.要求学生要认真做实验,主要是指不得迟到、早退和旷课,在做实验过程中要严格遵守实验室规章制度,认真完成实验内容,极积主动地向实验教师提问等;若学生无故旷课,则本次实验等级计为D;
3.学生要认真工整地书写实验报告,实验报告的内容要紧扣实验的要求和目的,不得抄袭他人的实验报告;
4.实验成绩评定分为A+、A、A-、B+、B、C、D各等级。
根据实验准备、实验态度、实验报告的书写、实验报告的内容进行综合评定,具体对应等级如下:
完全符合、非常符合、很符合、比较符合、基本符合、不符合、完全不符合。
实验名称:
算法设计基础实验(实验一)指导教师:
牟廉明,刘芳
实验时数:
4实验设备:
安装了VC++计算机
实验日期:
年月日实验地点:
第五教学楼北802
实验目的:
掌握算法设计的基本原理,熟悉算法设计的基本步骤及其软件实现。
实验准备:
1.在开始本实验之前,请复习相关实验内容;
2.需要一台准备安装WindowsXPProfessional操作系统和装有VC++6.0的计算机。
实验内容:
求n至少为多大时,n个1组成的整数能被2013整除。
实验过程:
1.1算法思想
2013=61*33,6个1能够整除33,寻找满足n个1能够整除61的n即可。
1.2算法步骤
1.定义变量y储存余数,i储存1的个数,m为被除数,初始化为111111;
2.如果被除数能够除尽61,输出i;
如果被除数不能够除尽61,while继续循环,m=y*1000000+111111,i++;
3.重复2,直到找到满足条件的m为止,输出i;
1.3算法实现(C++程序代码)
#include
usingnamespacestd;
intmain()
{
inty,m,i;
i=6;
m=111111;
while(y!
=0){
m=y*1000000+111111;
y=m%61;
i=i+6;
}
cout<
return0;
}
1.4算法分析
时间复杂度为O(n);
实验总结(由学生填写):
通过该实验发现,任何问题不要盲目的使用蛮力法,一定要化蛮力为巧力,这样既可以减少程序的时间复杂度,也能得到较精确的结果。
并且在以后的解决问题的过程中,一定要多分析,多思考。
实验等级评定:
实验名称:
蛮力法实验—分式化简(实验二)指导教师:
牟廉明,刘芳
实验时数:
4实验设备:
安装了VC++的计算机
实验日期:
年月日实验地点:
第五教学楼北802
实验目的:
掌握蛮力法的基本思想和方法,熟悉搜索法的软件实现。
实验准备:
1.在开始本实验之前,请回顾教材的相关内容;
2.需要一台准备安装WindowsXPProfessional操作系统和装有数学软件的计算机。
实验内容:
设计算法,将一个给定的真分数化简为最简分数形式,例如,将6/8化简为3/4。
实验过程:
1.1算法思想
首先对于普通整数;
可以先利用欧几里得算法求出最大公约数,然后再讲分子分母用最大公约数作除,即可求出最简真分数。
1.2算法步骤
输入:
约分前的两个整数分子和分母
输出:
约分后的分子分母
1.r=m%n;
2.循环直到r=0;
3.m=n;n=r;r=m%n;
4.a/n;b/n;
5.输出b/a;
1.3算法实现(C++程序代码)
#include
usingnamespacestd;
intmain()
{
longinta,b,r;
cout<<"请输入真分数的分母和分子:
";
cin>>a>>b;
longintm=a;
longintn=b;
r=a%b;
while(r!
=0)
{
a=b;
b=r;
r=a%b;
}
a=m/b;
b=n/b;
cout<<"原分数的最简分数为:
"<
return0;
}
1.4算法分析
时间复杂度为o(n).
实验总结(由学生填写):
此次实验较为简单,也较为基础。
但需注意的是,即使是很简单的问题,也需要注意细节,尤其是在定义长整型的时候,不要单独的只定义为整型。
实验等级评定:
实验名称:
分治法实验—循环移位(实验三)指导教师:
牟廉明,刘芳
实验时数:
4实验设备:
安装了VC++的计算机
实验日期:
年月日实验地点:
第五教学楼北802
实验目的:
通过本次实验,让学生掌握分治法的基本思想和技巧,并学会如何用C++软件来实现.
实验准备:
1.在开始本实验之前,请回顾教科书的相关内容;
2.需要一台准备安装WindowsXPProfessional操作系统和装有C++软件的计算机。
实验内容:
设计分治算法,实现将数组A[n]中所有元素循环左移k个位置,要求时间复杂度为O(n),空间复杂度为O
(1)。
例如,对abcdefgh循环左移3位得到defghabc。
实验过程:
1.1算法思想
对于第6题,用分治法进行求解的话,若是采用循环赋值的方式,如果字符的个数和左移的位数成倍数关系,那么算法就比较容易实现,但是如果不成比例关系,算法写起来就比较麻烦,所以,用了另一种方式,进行三次对称交换就可以完成算法。
1.2算法步骤
1.输入:
一个数组和左移位数
2.编写两个函数,一个是对称交换函数1,另一个是调用函数2,用函数2三次调用函数1,完成整个对称交换过程。
3.调用函数2
4.输出:
左移后的数组
1.3算法实现(C++程序代码)
#include
usingnamespacestd;
voidfun(char*a,intm,intk)
{
inttemp;
inti,j;
for(i=m,j=k;i<=k;i++,j--)
{
if(i<=(m+k)/2)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
voidxun(chara[],intk,intn)//(函数2)第二个调用函数,调用函数1
{
fun(a,0,k-1);//第一次调用函数1,将(abc)对称交换得到(cba),最后a[]为(cbadefgh)
fun(a,k,n-1);//第二次调用函数1,将(defgh)对称交换得到(hgfed),最后a[]为(cbahgfed)
fun(a,0,n-1);//第三次调用函数1,将(cbadefgh)对称交换得到(defghabc),即最后a[]为(defghabc)
}
intmain()
{
chara[1000];
cout<<"请输入一个数组:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 设计 课程设计