写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)

本文介绍了如何运用折半查找(二分查找)算法在整型有序数组中查找目标数字。通过比较数组中间元素与目标值,不断调整查找范围,直到找到目标或确定不存在。在实现过程中,重点在于正确计算查找区间的右边界,并在主函数中调用折半查找函数完成查找任务。
摘要由CSDN通过智能技术生成

问题:在一个整形有序数组中查找想要的数字,找到了返回下标,找不到返回-1。折半查找也叫二分查找。

思路:每次取数组中间位置的数字与待查找数字进行比对,若待查找数字较大则往后继续取中间位置数字比对,较小时则往前比对,直至找到待查找数字。

重点:写一个折半查找的函数BinarySearch(),完成查找过程,并在主函数中进行调用。定义变量left与right,[left,right]构成待查找区间。并初始化left为0,right=sizeof(arr)/ sizeof(arr[0])-1,即数组长度除以数组首元素长度再减一。但数组作为函数参数的时候,会隐式转换成指针,因此不能直接计算出right的值。我们需要借助另一个变量size,在主函数中先计算size=sizeof(arr)/ sizeof(arr[0]),再在函数中直接调用size,这样就可以通过size-1来计算right的值了。
实现代码:

#include<stdio.h>
#include<stdlib.h>
int BinarySearch(int arr[], int size, int to_find) {
 int left = 0;
 int right = size - 1;
 while (left <= right) {
  int mid = (left + right) / 2;
  if (to_find < arr[mid]) {
   right = mid - 1;//若被查找数小于中间下标的数,则在前半部分继续查找
                   //且下标为mid的数不必再查找
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值