C语言二分查找算法及实现代码

2025-05-27 0 25

二分査找也称折半査找,其优点是查找速度快,缺点是要求所要査找的数据必须是有序序列。该算法的基本思想是将所要査找的序列的中间位置的数据与所要査找的元素进行比较,如果相等,则表示査找成功,否则将以该位置为基准将所要査找的序列分为左右两部分。接下来根据所要査找序列的升降序规律及中间元素与所查找元素的大小关系,来选择所要査找元素可能存在的那部分序列,对其采用同样的方法进行査找,直至能够确定所要查找的元素是否存在,具体的使用方法可通过下面的代码具体了解。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30
#include <stdio.h>

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(midVal<key)

low = mid + 1;

else if(midVal>key)

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

查找成功

在上面的代码中,我们成功地通过二分査找算法实现了查找功能,其实现过程如下图所示。

C语言二分查找算法及实现代码

在如上图所示的查找过程中,先将序列中间位置的元素与所要査找的元素进行比较,发现要査找的元素位干该位置的左部分序列中。接下来将mid的左边一个元素作为 high,继续进行二分査找,这时mid所对应的中间元素刚好是所要査找的元素,査找结束,返回査找元素所对应的下标。在main函数中通过返回值来判断査找是否成功,如果査找成功.就打印输出“査找成功”的信息,否则输出“査找失畋”的信息。

以上就是对二分查找法的详细介绍,希望学习C语言的同学可以掌握。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C语言二分查找算法及实现代码 https://www.kuaiidc.com/74629.html

相关文章

发表评论
暂无评论