二分法(Binary Search)是一种在有序数组中查找特定元素的搜索算法。下面是用C语言实现二分法的示例代码:
#include <stdio.h>// 二分法查找函数int binarySearch(int arr[], int left, int right, int target) { while (left <= right) { int mid = left + (right - left) / 2; // 如果目标值等于中间值,直接返回 if (arr[mid] == target) { return mid; } // 如果目标值小于中间值,在左半部分继续查找 if (arr[mid] > target) { right = mid - 1; } // 如果目标值大于中间值,在右半部分继续查找 if (arr[mid] < target) { left = mid + 1; } } // 目标值不存在于数组中,返回-1 return -1;}int main() { int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91}; int target = 23; int arrSize = sizeof(arr) / sizeof(arr[0]); // 在有序数组中查找目标值 int result = binarySearch(arr, 0, arrSize - 1, target); if (result == -1) { printf("目标值 %d 不存在于数组中\n", target); } else { printf("目标值 %d 存在于数组中,索引为 %d\n", target, result); } return 0;}
以上代码中,我们定义了一个binarySearch()
函数来实现二分法查找。首先传入有序数组、左边界、右边界和目标值作为参数。在函数内部,通过不断调整左边界和右边界的值,每次取中间值与目标值进行比较,直到找到目标值或者左边界大于右边界为止。
在main()
函数中,我们定义了一个有序数组arr
,并将目标值target
设置为23。然后调用binarySearch()
函数来查找目标值在数组中的索引。最后,根据返回的结果输出相应的信息。
以上代码输出结果为:目标值 23 存在于数组中,索引为 5。表示目标值23在数组中的索引为5。
本文由 贵州做网站公司 整理发布,部分图文来源于网络,如有侵权,请联系我们删除,谢谢!
抖音(Tiktok)是由北京字节跳动科技有限公司(ByteDance)孵化的音乐创意短视频社交网站。它于2016年9月20日上线,主要面向全年龄段的用户,尤其是...
飞极速为您提供高清在线电影、电视剧大全、动画片,综艺等,飞极速在线更新及时,播放速度快,给您带来最好的观影体验!飞极速在线,免费提供日本新番动漫、最新电影和最新...
《南华早报》(英语:South China Morning Post, SCMP)和星期日出版的《星期日南华早报》(英语:Sunday Morning Post...
新华社海口5月9日电题:秘鲁羊驼“萌”在进博会上走俏。新华社记者田瑞杨冠宇在首届中国国际消费品博览会现场,穿行于各国好物间的陈女士在一个摆满秘鲁娃娃的货架前驻足。在与3岁的女儿视频通话后,陈女士挑选了一只手工制作的羊驼熊。“虽然有点贵,但是感觉很好,特别可爱。孩子一定很喜欢!”陈女士说。羊驼在秘鲁有着极高的经济价值,羊驼玩偶是具有当地特色的手工艺品。进博会上,陈女士买的熊娃娃来自秘鲁品牌Warmp...
放松银根是什么意思?首先,我们需要知道银根是什么。银根,即资金在金融市场上的供应量,经常被用来比喻银行中央的货币政策。一个国家的中央银行或货币当局为减少信贷供应、提高利率和消除过度需求造成的通货膨胀压力而采取的货币政策被称为银根紧缩。相反,为了防止经济衰退,通过增加信贷供应、降低利率、促进投资和推动经济增长而采取的货币政策被称为放松银根。放松银根是货币政策工具,是一国的中央银行或货币当局为阻止经济...
资产托管是什么意思?资产托管是指拥有资产所有权的企业、单位,通过签订契约合同的形式将资产有偿托管给专业的托管公司,由托管公司进行综合的资产调剂,并最终实现资产变现的一种经营方式。托管经营模式存在的内在原因有哪些?1、双方的风险偏好不同。二者考虑未来收益的角度不同,集团公司(或者大股东)没有向社会公众公开企业财务信息的要求,自身经营情况复杂,对风险相对不敏感,属于风险中性群体,在未来经营条件存在不确...