折半查找要求序列一定是递增或者递减吗?这种序列180 500 200 450怎么实现折半查找
1条回答 默认 最新
关注 折半查找也称为二分查找(Binary search),要求线性表中的节点必须己按关键字值的递增或递减顺序排列。【望采纳】
C语言实现:#include<stdio.h> int BinSearch(int arr[],int len,int key) //折半查找法(二分法) { int low=0; //定义初始最小 int high=len-1; //定义初始最大 int mid; //定义中间值 while(low<=high) { mid=(low+high)/2; //找中间值 if(key==arr[mid]) //判断min与key是否相等 return mid; else if(key>arr[mid]) //如果key>mid 则新区间为[mid+1,high] low=mid+1; else //如果key<mid 则新区间为[low,mid-1] high=mid-1; } return -1; //如果数组中无目标值key,则返回 -1 ; } int main() { int arr[]={180,200,450,500}; //首先要对数组arr进行排序 printf("%d \n",BinSearch(arr,(sizeof(arr)/sizeof(arr[0])),7)); return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
- ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
- ¥15 请各位帮我看看是哪里出了问题
- ¥15 vs2019的js智能提示
- ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
- ¥15 uniapp的h5项目写一个抽奖动画
- ¥15 hadoop中启动hive报错如下怎么解决
- ¥15 如何优化QWebEngineView 加载url的速度
- ¥15 关于#hadoop#的问题,请各位专家解答!
- ¥15 如何批量抓取网站信息