int compare(const void *a,const void *b)
{return *(int *)a-*(int *)b;
}
//二分查找离元素(可以等于)
int bi_search(int num[10], int len, int target)
{
<span style="white-space:pre"> </span>int begin = 0;
<span style="white-space:pre"> </span>int end = len-1;<span style="white-space:pre">   </span>
<span style="white-space:pre"> </span>while(begin<end)
<span style="white-space:pre"> </span>{
<span style="white-space:pre">     </span>int mid = (begin+end)/2;
<span style="white-space:pre">     </span>cout<<mid<<" "<<target<<endl;
<span style="white-space:pre">     </span>cout<<mid<<" "<<len-1<<endl;
<span style="white-space:pre">     </span>//最近的一个
<span style="white-space:pre">     </span>if(num[mid]==target)
<span style="white-space:pre">         </span>return mid;
<span style="white-space:pre">     </span>else if(num[mid]>target)
<span style="white-space:pre">         </span>end = mid-1;
<span style="white-space:pre">     </span>else
<span style="white-space:pre">         </span>begin = mid+1;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>cout<<"begin:"<<begin<<"end:"<<end<<endl;
<span style="white-space:pre"> </span>return end;
}
void main()
{int num[10]={11,35,65,25,79,54,34,66,92,30};qsort(num,10,sizeof(int),compare);for(int i=0;i<10;i++)cout<<num[i]<<" ";cout<<endl;int index = bi_search(num, 10, 36);cout<<index<<endl;
}

转载于:https://www.cnblogs.com/yan456jie/p/5369382.html

二分查找离左边元素最近的(可以等于)相关推荐

  1. Python算法二分查找之重复元素列表

    描述: 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的第一个出现的target,如果目标 ...

  2. 第一天 :二分查找+移除元素

    数组基础 数组在内存空间的地址是连续的 数组下标都是从0开始 数组元素不能删,只能覆盖 二分查找 题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数 ...

  3. 开花(在b数组中二分查找a数组元素)

    注意: 代码一:二层循环暴力查找超时 代码二(最棒):借用STL set中的count()方法快速搞定,且没有超时so,集合查询应该很快注意:count()时间复杂度是线性变换的最坏的情况为O(n)s ...

  4. 二分查找发(对半查找法)

    问题描述: 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的第一个出现的target,如果 ...

  5. StringBuffer+排序+二分查找+包装类+正则表达式+常用类

    一.StringBuffer 1.概述 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间.而StringBuffer就可以解决这个问题StringBuffe ...

  6. 常考数据结构与算法-NC105 二分查找-II

    描述 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存 ...

  7. 二分查找--AVL查找树

    Data Mining 开启阅读模式 二分查找--AVL查找树 二分查找可以找到元素在数组中的下标位置,而查找树由于采用的是树结构,所以只能判断出元素是不是在树中以及给出最大/小值,而不能确定指定元素 ...

  8. pat-1057 Stack 树状数组+二分查找

    题意 给我们一个n表示操作数量 然后三种操作 push和pop 还有求中位数的操作 让我们根据操作输出正确的解 分析 用sort排序做 或者 map标记法都会超时 考虑更快的方法 如何快速找到给定一串 ...

  9. 二分查找算法实现(图解)与实例

    现在我们来玩一个猜数的游戏,假设有一个人要我们猜0-99之间的一个数.那么最好的方法就是从0-99的中间数49开始猜.如果要猜的数小于49,就猜24(0-48的中间数):如果要猜的数大于49,就猜74 ...

最新文章

  1. [InnoDB系列] - InnoDB独立/共享表空间的转换
  2. C#反射使用方法过程及步骤
  3. 设计模式 | 适配器模式及典型应用
  4. c语言 显示 图形界面,「分享」C语言如何编写图形界面
  5. char *a 与char a[] 的区别和char** argv与char *argv[]区别
  6. Python--第4次平时作业
  7. 数据科学 python_如何使用Python为数据科学建立肌肉记忆
  8. 电气专业学python吗_985大学毕业起薪最高的五个专业,计算机、金融、电气上榜!...
  9. 第七讲 塔木德破产分配法练习题
  10. DPDK报文分类与访问控制
  11. 新手小白安装linux系统
  12. 你为什么总是很忙碌,却还在原地踏步!
  13. 钉钉小程序复选框 全选反选 表单获取内容有误处理
  14. 黑客30秒攻破苹果iOS系统夺得大赛冠军
  15. 软件架构设计 大型网站技术架构与业务架构融合之道
  16. 关于深度学习理论和架构的最新综述(part3)
  17. 维基解密创始人被捕,从“天才黑客”到“阶下之囚”
  18. 网络磁干扰仿真测试软件,电磁仿真软件有哪些?电磁仿真软件专辑推荐!
  19. 卷积神经网络概念及使用 PyTorch 简单实现
  20. 听音乐赚钱App,每天听歌收益5美金,保姆级教学,被动收入人人可做

热门文章

  1. 贫血的Domain Model之说
  2. 分享一个前后端分离的web项目(vue+spring boot)
  3. java版电子商务spring cloud分布式微服务b2b2c社交电商:服务容错保护(Hystrix断路器)...
  4. spark mllib推荐算法使用
  5. bash下个人习惯的一些文件设置
  6. MySql 自动更新时间为当前时间
  7. apple mach-o linker (id) error
  8. VSFTP的主动模式和被动模式
  9. opencv 在debian6.0下安装
  10. proe2001安装指南