二分法查找折半查找.doc_第1页
二分法查找折半查找.doc_第2页
二分法查找折半查找.doc_第3页
二分法查找折半查找.doc_第4页
二分法查找折半查找.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要:Matlab作为一款功能强大的软件在程序编写方面也功能强大。本论文分别用C语言和Matlab编写了一个简单的二分法查询算法,从中了解他们的异同,从而从Matlab和C语言的角度进一步了解数学软件与算法之间的知识。关键字:Matlab、C、算法1、 知识点简述1、 Matlab简述Matlab的名称源自Matrix Laboratory,是MathWorks公司于1984年推出的数学软件,是一种用于科学工程计算的高效率的高级语言。Matlab的基本功能如下:数学运算功能;2D和3D图形显示功能;交互式的高级编程语言M语言编程功能;工具箱函数功能;编译功能;Simulink仿真功能;Stateflow交互式设计功能;自动代码生成功能等等2、 C语言和算法用C语言编写的程序,称为C语言源程序,简称C程序。所谓算法是指一组有穷的指令集,是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程。一般来说,算法应具有的特征有:确定性,算法的每一步都必须有确切的定义;有穷性,一个算法必须在执行有穷步后结束;可行性;拥有足够的情报。通常,一个算法由对数据对象的运算和操作以及其控制结构两部分组成。2、 问题叙述本论文中以数学建模为基础,根据研究方向为算法出发,以一个简单的程序为例,简要的讲诉数学建模软件和算法之间的关系。1、 问题用二分法编写程序,查找数组中是否存在某一个整数2、 分析问题2.1、可以将问题分解成几个小问题:输入模块,查找模块,主模块等。2.2、查找的整数由键盘输入2.3、用一个函数来计算数组中是否存在某一整数,如果数组中存在该整数,则返回该正数在数组中的位置;反之,则返回-12.4分别用C语言和Matlab编写程序3、 程序设计1、 简单设想2、 模块设计2.1、为了增强程序的可读性,需要一定的提示语句和输出语句,即:屏幕输入模块2.2、该问题主要是在于查找,则可以把用二分法查找的信息单独设置成一个模块,即:查找模块2.3、即使是一个小程序,也需要有主函数(C语言中是Main函数),简要的显示程序的大纲信息,即:主模块3、 符号说明程序代码中有很多的符号,可读性强的程序中的符号都有一定的符号含义,可以使得程序更容易读懂和理解4、 程序代码1、 C语言编写的程序#include stdio.h#include stdlib.hvoid printData(int a) /数组输出函数int i;for(i=0;ib)return -1;elsemid=(a+b)/2;if(x=Lmid)return mid;elseif(xLmid)return Binary_Search(L,mid+1,b,x);elsereturn Binary_Search(L,a,mid-1,x);main() /主函数int L=23,24,33,43,53,67,77;int position,x; printf(please input a data you want to find:);scanf(%d,&x);printData(L);position=Binary_Search(L,0,6,x);if(position=-1)printf(the data you can not find,not in Ln);elseprintf(the position of the data is:%dn,position+1);2、 Matlab2.1、Binary_Search.m %二分法查找的函数function findD=Binary_Search(L,a,b,x) if ab findD=-1; return else mid =(a+b) / 2; if x=L(mid); findD=mid; return elseif xL(mid); findD=Binary_Search(L,mid+1,b,x); return else findD=Binary_Search(L,a,mid-1,x); return end endEnd2.2、findData.m %主函数L=23,24,33,43,53,67,77;lenD=length(L);x=input(please input a data you want to find:);disp(L);a=1;position=Binary_Search(L,a,lenD,x);if position=-1 disp(the data you can not find,not in L);else disp(the position of the data is:); disp(position);end5、 结果显示程序中已定义数组为:L=23,24,33,43,53,67,77;1、 C语言中的结果显示1.1、输入数字:0 :不存在1.2、输入数字:23:存在,第1个数字1.3、输入数字:33:存在,第3个数字1.4、输入数字:77:存在,第7个数字1.5、输入数字80:不存在2、 Matlab中的结果显示2.1、输入数字:0 :不存在 findData.mplease input a data you want to find:0 23 24 33 43 53 67 7the data you can not find,not in L2.2、输入数字:23:存在,第1个数字 findData.mplease input a data you want to find:23 23 24 33 43 53 67 77the position of the data is: 12.3、输入数字:33:存在,第3个数字 findData.mplease input a data you want to find:33 23 24 33 43 53 67 77the position of the data is: 32.4、输入数字:77:存在,第7个数字 findData.mplease input a data you want to find:77 23 24 33 43 53 67 77the position

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论