问题:在有序数组中查找给定元素的下标goal。
在查找一个数组元素的下标,可以用循环来解决,但是如果一个数足够大,比如说手机的价格,用循环来查找,就相当于叫一个人猜,从0开始,需要组名大全猜很久。这时候就出现了二分查找,也叫对半查找。
对半查找顾名思义就是猜一次,下花蛤怎么洗次猜的内容就减少一半
这时候定义一个变量left表示最左边元素的下标,在定义一个right表示最右边元素的下标,而mid就表示中间元素的下标。
当中间值小于目标值,left重新定义。
if (mid < goal){left = mid + 1;}
当中间值大于目标元素,right重新定义。
el if (mid > goal){right = mid - 1;}
当中间元素等于目标元素时,打印即可。
el{printf("你找到了,下标为:%d", mid);break;}
这中查找方式可能会使用多次,这时候来一个while循环就可以重复查找的撒
如果最后数组元素找不到对应的元素,就在while循环外打印出找不到。
if (left > right)printf("找不到");
最后代码如下:
#include<stdio.h>//在数组中找到某个数,二分查找int main(){int goal = 7;int在校证明有什么用 arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof arr[0];int left = 0; int right = sz - 1;while (left <= right){int mid = (left + right) / 2;i最有成就感的事f (mid < goal){left = mid + 1;} el if (mid > goal){right = mid - 1;}el儿童现代诗歌{printf("找到了,下标为:%d", mid);break;}}if (left > right)printf("找不到");return 0;}
到此这篇关于c语言数据结构之二分法查找详解的文章就介绍到这了,更多相关c语言 二分法查找内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 23:46:50,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/91fcbe92babde2846c10afb2159daec6.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C语言数据结构之二分法查找详解.doc
本文 PDF 下载地址:C语言数据结构之二分法查找详解.pdf
留言与评论(共有 0 条评论) |