C言语二分查找(折半查找)算法及代码

网友投稿 347 2022-10-30


C言语二分查找(折半查找)算法及代码

二分査找也称折半査找,其长处是查找速度快,缺陷是请求所要査找的数据必需是有序序列。该算法的根本思惟是将所要査找的序列的两头地位的数据与所要査找的元素停止比拟,假如相等,则表现査找胜利,不然将以该地位为基准将所要査找的序列分为阁下两局部。接下来依据所要査找序列的起落序纪律及两头元素与所查找元素的巨细关系,来选择所要査找元素能够存在的那局部序列,对其采取异样的办法停止査找,直至可以肯定所要查找的元素能否存在,详细的运用办法可经过下面的代码详细理解。

#include  binarySearch(int a[], int n, int key){ int low = 0; int high = n - 1; while(low<= high){ int mid = (low + high)/2; int midVal = a[mid]; if(midValkey) high = mid - 1; else return mid; } return -1; } int main(){ int i, val, ret; int a[8]={-32, 12, 16, 24, 36, 45, 59, 98}; for(i=0; i<8; i++) printf("%d\t", a[i]); printf("\n请输人所要查找的元素:"); scanf("%d",&val); ret = binarySearch(a,8,val); if(-1 == ret) printf("查找掉败 \n"); else printf ("查找胜利 \n"); return 0; }

运转后果:

-32    12    16    24    36    45    59    98 请输出所要查找的元素:12 查找胜利

在下面的代码中,我们胜利地经过二分査找算法完成了查找功用,其完成进程如下图所示。

在如上图所示的查找进程中,先将序列两头地位的元素与所要査找的元素停止比拟,发现要査找的元素位干该地位的左局部序列中。接下来将mid的右边一个元素作为 high,持续停止二分査找,这时mid所对应的两头元素刚好是所要査找的元素,査找完毕,前往査找元素所对应的下标。在main函数中经过前往值来判别査找能否胜利,假如査找胜利.就打印输入“査找胜利”的信息,不然输入“査找掉畋”的信息。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:单片机上的发光二极管(LED灯)
下一篇:C言语次序查找算法及代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~