折半查找算法实现(C++).doc_第1页
折半查找算法实现(C++).doc_第2页
折半查找算法实现(C++).doc_第3页
折半查找算法实现(C++).doc_第4页
折半查找算法实现(C++).doc_第5页
全文预览已结束

下载本文档

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

文档简介

/此程序是折半查找的详细算法实现#includeusing namespace std;void CreateData(int data,int length);/为一个数组赋值/此函数是折半查找函数。其中data是所查寻的数组,length是数组的长度。x是所要查找的数,返回的值是数据x在数组中的位置int Bisearch(int data,int x,int begin,int last);/折半查找函数,使用过程中只需要给出数组名字,要查找的数值x,数组的起始位置begin及莫位置即可。void PrintData(int data,int length);/输出一个数组的所有元素。void main()/声明一个数组data10,并调用CreateData()函数为该数组赋值。int data10;CreateData(data,10);/调用PrintData()函数输出data的值。PrintData(data,10);loop:/定义一个整形变量用于接收用于要查找的数值,并提示用于输入该值int x;coutx;system(cls);PrintData(data,10);/调用函数Bisearch()函数查找用于输入的x在数组中的元素。int loaction = Bisearch(data,x,0,9);/首先判断是否查找成功if( loaction = -1)cout查找失败,没有你要查找的值endl;/当查找成功的情况下输出用户值所在的位置。elsecout你要查找的值x的位置在第:loaction+1个位置!endl;goto loop;/生成数据函数的定义。void CreateData(int data,int length)for(int i=0;ilength;i+)datai =i;/void CreateData(int data,int length)void PrintData(int data,int length)cout你所要输出的数组的元素有:;for (int i=0;ilength;i+)coutdatai ;coutlast)return -1;exit(0);int mid=(begin + last) /2;/如果x与数组中datamid的值相等,则查找成功,本函数执行完毕。if (x = datamid)return mid;exit(0);/当xdatamid的时候,则进行作面查找数据x。采用递归方法实现。if ( x datamid )Bisearch(data,x,begin ,mid-1);/如果xdatamid的情况下,即往数组的有半部分扫描数组。elseBisearch(data,x,mid+1 ,last);(2)# include void creat_ShuZu(int num,int length)/创建长度是length的数组numint i;for(i=0; ilength; +i) printf(第 %d 个元素:, i+1); scanf(%d, &numi); printf(数组创建完成!n);void jiangXu(int num,int length)/降序排列数组num中的元素int i,j;int temp;/临时变量for(i=0; ilength-1; +i)for(j=i; jlength-1; +j) if (numi numj+1)/numi与numj+1值互换 temp = numi;numi = numj+1;numj+1 = temp; printf(%d ,numi);printf(%dn,num9);void zheBan_Search(int need_find_num,int num,int length)/折半查找算法查询整型数字need_find_num是否在数组num中int low,mid,high;int flag = 0; low = 1;high = length;while (low = high)mid = (low + high)/2;if (need_find_num nummid-1)high = mid - 1;else flag = mid;printf(查询结果: 找到了,数%d在数组的第%d位n,need_find_num,flag);break; if (flag = 0)printf(查询结果: %d不是该数组中的元素n,need_find_num);int main(void)/主函数 int num10 ;int need_find_num;/需要在数组num中查询的整型数字printf(创建一个长度是10的数组: n); creat_ShuZu(num,10);printf(将数组中的元素降序排列: n); jiangXu(num,10);char isContinue ;printf(y或Y)开始查找,其他退出:);fflush(stdin);scanf (%c,&isContinue);while (isContinue = y | isContinue = Y)printf(请输入一个要查找的整型数据:);scanf(%d, &need_find_num);printf(折半算法查询%d是否为数组中的一个元素.n,need_find_num);zheBan

温馨提示

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

评论

0/150

提交评论