首页 C语言二分查找算法

C语言二分查找算法

举报
开通vip

C语言二分查找算法C语言二分查找算法 C语言实现 二分查找算法 1.1 /*二分算法*/ #include #define N 100 int Found(int a[],int x,int y) { int h,r,m; h=0;r=y-1;m=(h+r)/2; while(hr) return -1; /*查找失败,返回,1*/ return m; /*查找成功,返回有效下标m */ } // Search_Bin void main() { int m,a[N],i,x,n; printf("请输入m...

C语言二分查找算法
C语言二分查找算法 C语言实现 二分查找算法 1.1 /*二分算法*/ #include #define N 100 int Found(int a[],int x,int y) { int h,r,m; h=0;r=y-1;m=(h+r)/2; while(h<=r&&x!=a[m]) if(xr) return -1; /*查找失败,返回,1*/ return m; /*查找成功,返回有效下标m */ } // Search_Bin void main() { int m,a[N],i,x,n; printf("请输入m=:\n"); scanf("%d",&m); printf(" 请按从小到大的顺序输入一组数:\n"); for(i=0;i #include typedef int DATATYPE; /*假定顺序表元素的类型为整型*/ #define maxsize 1024 /*假定顺序表的最大长度为1024*/ typedef struct { DATATYPE data[maxsize]; /*顺序表元素数组,第一个结点是data[0] */ int len; /*线性表中实际存放的数据个数*/ } SEQLIST; /*****************************************************************************/ void ListInit (SEQLIST *L) //将表L清空(初始化) { L->len=0; } /*****************************************************************************/ int ListLength(SEQLIST L) //返回线性表L的元素个数 { return(L.len); } int ListInsert(SEQLIST *L, int i, DATATYPE x) //在顺序表L的第i个位置插入元素x,成功:1,失败:0 { int j; if ((L->len)>=maxsize) { printf("overflow\n"); return 0; } //溢出 else if((i<1)||(i>L->len+1)) { printf("error\n"); return 0; } //非法位置 else { for(j=L->len-1;j>=i-1;j--) L->data[j+1]=L->data[j]; //结点后移 L->data[i-1]=x; //插入x L->len=L->len+1; //表长加1 return(1); //成功 } } void Listinput(SEQLIST *L,DATATYPE x) { int i,n; printf("请输入要输入的数据个数:"); scanf("%d",&n); for(i=0;idata[i])); L->len++; } printf("输入成功~~"); } int Listsearch(SEQLIST *L,DATATYPE K) { int low=0,mid,high=L->len-1; while (low<=high) { mid=(low+high)/2; //整除 if (K==L->data[mid]) return mid; if (Kdata[mid]) high=mid-1; else low=mid+1; } return -1; //查找失败 } main() { SEQLIST list; int i,xuanze,p; DATATYPE x; char flag='Y'; ListInit (&list); while(1) { printf(" 1、创建顺序表数组 \n"); printf(" 2、查找数据 \n"); printf(" 0、退出 \n"); printf("\n"); printf("请选择:"); scanf("%d",&xuanze); switch(xuanze) { case 1: { Listinput(&list,x); break; } case 2: { while(toupper(flag)=='Y') { printf("\n请输入要查找的数据:"); scanf("%d",&p); Listsearch(&list,p); if(Listsearch(&list,p)==-1) printf("查找失败!!\n"); else printf("查找成功!!\n"); printf("是否继续查找(y/n):"); scanf("%s",&flag); } break; } case 0: { return ;break; } default: { printf("谢谢使用~~"); break; } } system("cls"); } }
本文档为【C语言二分查找算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_731942
暂无简介~
格式:doc
大小:18KB
软件:Word
页数:0
分类:工学
上传时间:2017-09-27
浏览量:13