




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020-3-6 程 序 设 计 大 作 业 报 告学 院航天学院班 级02021001学 号2010300484姓 名康丹青摘要我所完成的是算法型大作业的第七道题,编写查找算法的演习程序。以下所要介绍的就是如何正确运用“折半查找算法”实现对一组顺序排列数的查找。设计思路是:本程序先利用标准输入函数,输入一组数字和待查找的变量,并存储到数组中去,然后利用“冒泡排序法“对该无序数组进行从小到大排序,进而调用查找函数对该组数进行查找,并输出所得值,来实现查找功能的。目录1 摘要31.1 设计题目31.2 设计内容31.3 开发工具31.4 应用平台32 详细设计32.1 程序结构32.2 主要功能32.3 函数实现32.4 开发日志43 程序调试及运行43.1 程序运行结果43.2 程序使用说明43.3 程序开发总结44 附件(源程序)41 摘要1.1 设计题目查找算法1.2 设计内容本程序建立了一个CZSF.cbp的C程序工程。具体内容为如下:#include /*预处理命令*/#include /*预处理命令*/#include kspx.h /*自定义的头文件,包含快速排序函数kspx的相关信息*/int main() void search(int a,int b,int n); /*对能够实现程序查找功能的search函数进行声明*/int a50,b,n,i; /*定义整形数组和变量*/ printf(input the sum of the numbers:); scanf(%d,&n); /*输入所要查找得数的范围*/ printf(input %d numbers:,n); for(i=0;in;i+) scanf(%d,&ai); /*依次输入各个数,并存储到数组中去*/printf(the need number:); scanf(%d,&b); /*输入所要查找得数*/ kspx(a,n); /*调用快速排序函数对该组数进行排序*/ search(a,b,n); /*利用查找函数进行查找*/ return 0;void search(int a,int b,int n) /*search函数的定义*/ int x1=0,x2=n-1,mid,j=0; /*定义变量想,x1,x2,mid和j*/ while(x1=x2) /*循环条件,x1和x2分别为区间左右端点*/ mid=(x1+x2)/2; /*mid为区间中值*/ if(bamid) x1=mid+1; /* 依据查找数b和amid 的大小关系确定新区间*/ else printf(%d,+mid); /*输出b所在该顺序数组中的位置*/ j=1; break; /*发现b,跳出循环*/ if(j=0) printf(no found!); /*判断b是否在该组数中*/1.3 开发工具Code Blocks 10.051.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构 该程序功能的实现是有三个函数来共同完成的,其中main函数是系统主调函数,为顺序结构,其余两个函数在main函数中被调用。kspx函数为排序函数,不属于报告范围。Search函数为查找函数,它主要是由一个当型循环体内部穿插选择语句所构成的。 main函数中的局部变量n和b通过值传递的方式传给search函数中的形参变量n和b,指针常量a通过地址传递的方式传给search函数中的指针变量a,这样search函数就可以调用主函数中的数值了。函数调用结束后形参变量释放,并得到返回值传给主调函数。2.2 主要功能该程序的主要功能是判断一组数中是否含有某一已知变量,若有,就对该组数进行顺序排列,并输出该变量在数组中的位置,若没有,就输出“no found!”。功能的实现主要是由kspx函数和search函数来完成的。2.3 函数实现本程序的主要功能,即查找,是由search函数来实现的,以下详细介绍该函数的算法和结构:Search函数的功能是调用主函数中的数组a和局部变量b,n.进而利用折半查找算法进行数据查找的。其具体内容如下:void search(int a,int b,int n) int x1=0,x2=n-1,mid,j=0; while(x1=x2) mid=(x1+x2)/2; if(bamid) x1=mid+1; else printf(%d,+mid); j=1; break; if(j=0) printf(no found!);它的算法是这样的:对于一组已经按从小到大顺序排列的数组a,取其元素个数为n,x1和x2分别为待查找数字b所在区间的左端点和右端点,mid=(x1+x2)/2为区间中点。 如果 bamid 就 x1=mid+1改变区间右端点,缩小区间长度,进入下一层循环。 如果b=amid 就 printf(%d,+mid); 把b所在的位置输出,并 j=1 跳出循环。 判断j的值 确定该数组中是否存在b值 没有就输出“no found!”结束程序。它的结构是这样的:利用当型循环语句while,执行上述算法的 部分,循环条件是x1=x2, 部分是靠选择语句if 有机组合到一起的。循环结束后执行算法第四步,并最终结束函数的调用。main函数整体是顺序结构。2.4 开发日志我最初是想在利用折半查找算法的基础上,通过对search函数的直接递归调用来实现其查找功能的,不过没有调试正确,所以利用当型循环语句,外加循环终止条件进行控制,这表明C程序许多地方都是相通的,同一种算法可能有多种不同的C语句表达形式,只是其空间复杂性和时间复杂性不一样而已。C程序的很多地方,我还不能灵活的加以应用,这就需要我沉下心来,仔细分析,多上机,多做例题,从而真正掌握这门描述抽象事物的基本工具。3 程序调试及运行3.1 程序运行结果上面所显示的是程序某一次运行所得到的结果图,如图所示,第一行输入所查找数的范围,即数组的大小,第二行依次输入数各个数组元素,第三行输入所要查找的数,回车后,即得到第五行,查询的结果。各行均有提示,按要求输入即可。3.2 程序使用说明程序的主要作用:判断一组数中是否含有某一已知变量,若有,就对该组数进行顺序排列,并输出该变量在数组中的位置,若没有,就输出“no found!”。程序的使用方法:在Code Blocks 10.05下运行C源程序,执行.exe程序,并按提示输入相关数据,即可运行得到最终结果。3.3 程序开发总结C程序大作业能够将简单的算法扩展为实现一定作用的应用程序,从而锻炼了一名程序员在多个方面的能力,如程序结构的组成,相关函数的调用,函数参数的传递,循环体和选择语句的合理构成等等。这对一名初涉C程序的新手而言,无疑是有很重要的意义的!4 附件(源程序)#include #include #include kspx.hint main() void search(int a,int b,int n); int a50,b,n,i; printf(input the sum of the numbers:); scanf(%d,&n); printf(input %d numbers:,n); for(i=0;in;i+) scanf(%d,&ai); printf(the need number:); scanf(%d,&b); kspx(a,n); search(a,b,n); return 0;void search(int a,int b,int n) int x1=0,x2=n-1,mid,j=0; while(x1=x2) mid=(x1+x2)/2; if(bamid) x1=mid+1; else printf(%d,+mid); j=1; break; if(j=0) printf(no found!);其中头文件kspx.h的具体内容如下:#ifndef ZBPX_H_INCLUDED#define ZBPX_H_INCLUDEDvoid kspx(int a,int n) int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卸车岗位安全培训课件
- 2025河南驻马店市正阳县县管国有企业招聘20人(第二批)笔试参考题库附带答案详解
- 2025数字重庆大数据应用发展有限公司校园招聘10人笔试参考题库附带答案详解
- 2025年陕西农业发展集团有限公司(陕西省土地工程建设集团)招聘(200人)笔试参考题库附带答案详解
- 2025年度安徽中国人民健康保险股份有限公司芜湖中心支公司二季度招聘2人笔试参考题库附带答案详解
- 2025年国家能源集团广西电力有限公司高校毕业生春季招聘34人笔试参考题库附带答案详解
- 2025年中国大唐集团科技创新有限公司招聘14人笔试参考题库附带答案详解
- 2025山东万创智能装备科技有限公司招聘17人笔试参考题库附带答案详解
- 2025国网物资有限公司招聘高校毕业生约3人(第二批)笔试参考题库附带答案详解
- 2025四川经准特种设备检验有限公司招聘50人笔试参考题库附带答案详解
- 人教版 2024 版历史八年级上册第五单元 第 13 课《国共合作与北伐战争》检测卷
- 小学数学教师新课标考试试题(含答案)
- 厂房搬迁管理办法
- 保险学考试题(附答案)
- 中药处方点评管理办法
- 国企纪法教育实施路径
- 药品发放登记管理制度
- 临床科室科研管理制度
- 铁艺围栏采购合同
- 中国皮肤基底细胞癌诊疗指南2023
- 卫星通信技术在电力行业中的应用场景分析
评论
0/150
提交评论