ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:70.74KB ,
资源ID:13090411      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13090411.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中北大学软件学院算法分析与设计实验报告Word下载.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中北大学软件学院算法分析与设计实验报告Word下载.docx

1、实验时间2016年4月7日8时至10时学时数21.实验名称实验一 串匹配程序设计2.实验目的(1) 熟练掌握串匹配的含义(2) 掌握BF算法匹配的过程并编程实现(3) 熟悉C+编译环境的基本操作3.实验内容 给定两个字符串S和T,用BF算法,在主串S中查找字串T,输出结果,输出时要求有文字说明。请编写程序。4.实验原理或流程图 基本思想:从主串S的第一个字符开始和模式T的第一个字符进行比较,若相等,则继续比较两者的后续字符;若不相等,则从主串S的第二个字符开始和模式T的第一个字符进行比较,重复上述过程,若T中的字符全部比较完毕,则说明本趟匹配成功;若最后一轮匹配的起始位置是n-m,则主串S中剩

2、下的字符不足够匹配整个模式T,匹配失败。这个算法称为朴素的模式匹配算法,简称BF算法。 设串S长度为n,串T长度为m,在匹配成功的情况下,考虑最坏情况,即每趟不成功的匹配都发生在串T的最后一个字符。设匹配成功发生在si处,则在i-1趟不成功的匹配中共比较了(i-1)m次,第i趟成功的匹配共比较了m次,所以总共比较了im次,因此平均比较次数是: 最坏情况是O(nm)。或者写书上P39页的伪代码描述。5.实验过程或源代码#include int BF(char S, char T) int index = 0; /主串从下标0开始第一趟匹配 int i = 0, j = 0; /设置比较的起始下标

3、 while (Si != 0) & (Tj !) /模式匹配没有结束 printf(-从主串的第%d个位置开始与模式串进行匹配:(只输出回溯信息)n,i); if (Si = Tj) /相同位置字符相同 i+; j+; /向后匹配 else /相同位置字符不同 printf(由于主串下标i为%d的字符%c和模式串下标j为%d的字符%c失配,i,Si,j,Tj); index+; i = index; j = 0; /i和j分别回溯 printf(所以i和j分别回溯到%d,%d重新开始匹配n,i,j); if (Tj = ) return index + 1; /返回本趟匹配的开始位置(不是下

4、标) else return 0;int main()char S100,T100;printf(请输入主串S(不超过100个字符):);scanf(%s,S);请输入子串T(不超过100个字符):,T);int index=BF(S,T);if(index = 0)printf(模式匹配失败!else模式匹配成功,子串%s在主串%s中首次匹配的位置是%d,T,S,index);return 0; 6.实验结论及心得 通过本次实验我理解了使用蛮力法解决问题的特点,蛮力法的设计思想是直接基于问题本身的描述来设计算法,即不采用任何方法来精简计算过程、运算次数或者设法简化问题本身。所以蛮力法设计的算

5、法虽然简单易懂,但是效率却往往不是很令人满意,比如串的模式匹配问题中采用BF算法效率低下的主要原因就在于BF算法一旦主串和子串匹配失败就会产生回溯,如果能利用已有的匹配结果来减少回溯就可以提高效率,如KMP算法。实验二 排序问题程序设计(1) 掌握选择排序和起泡排序的基本思想 (2) 掌握两种排序方法的具体实现过程(3) 在掌握的基础上编程实现两种排序方法 输入一个待排序的序列,分别用选择排序和起泡排序两种排序方法将其变换成有序的序列,输出结果,输出时要求有文字说明。 书上P42页选择排序想法三点抄上去 书上P43页冒泡排序想法三点抄上去/-选择排序-/对含有n个数的数组进行遍历 void v

6、isit(int r,int n)for(int i=0;in;i+)%4d ,ri);n/选择排序 void SelectSort(int r , int n) int i, j, index, temp;int compare = 0,move = 0;for (i = 0; i n - 1; i+) /对n个记录进行n-1趟选择排序index = i; for (j = i + 1; j n; j+) /在无序区中查找最小记录if (rj rindex) index = j;compare+; /比较次数增加1 if (index != i) /交换记录temp = ri;ri = ri

7、ndex;rindex = temp; move+=3; /交换一次移动3次 visit(r,10);在本次排序中共比较了%d次,移动了%d次。,compare,move);int r10=0;请依次输入10个整数,用空格隔开:10;scanf(%d,&ri);排序之前的记录:visit(r,10);进行选择排序:(每趟排序后的结果如下所示)n SelectSort(r,10);排序之后的记录:#include rj+1) /注意不能写作count1+int temp = rj; rj = rj + 1; rj + 1 = temp;count2 = count2 + 3; /1次交换是3次移

8、动操作exchange = j; /记载每一次记录交换的位置 /每趟排序输出一次,观察记录的变动情况 本次排序中的比较次数为%d,移动次数为%d。,count1,count2);进行冒泡排序: BubbleSort(r, 10); 通过本次实验我理解了选择排序和起泡排序的基本思想。选择排序和起泡排序都是通过将待排序记录划分成有序区和无序区,然后通过交换扩大有序区,缩小无序区,最终达到排序的目的。两者又有区别,选择排序可以直接选出无序区的最小记录并一次插入到合适的位置上,之后不再调整,而冒泡排序则是通过两两交换实现移动的,由于很多移动无法将记录一次放置到合适的位置上,所以存在很多“无效”的移动操作,从实验结果可以看出,起泡排序的移动次数明显比选择排序要多就是因为这样的“无效”的移动操作浪费了时间。实验三 数字旋转方阵程序设计(1) 掌握分治法的设计思想 (2) 掌握数字旋转方阵的具体实现过程(3) 熟练掌握二维数组的使用方法(4) 在掌握的基础上编程实现数字旋转方阵的实现过程 给出一个初始数据,在此数据的基础上由外层向里层填写数据,完成一个数字旋转方阵

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1