二分查找离左边元素最近的(可以等于)
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
二分查找离左边元素最近的(可以等于)相关推荐
- Python算法二分查找之重复元素列表
描述: 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标 ...
- 第一天 :二分查找+移除元素
数组基础 数组在内存空间的地址是连续的 数组下标都是从0开始 数组元素不能删,只能覆盖 二分查找 题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数 ...
- 开花(在b数组中二分查找a数组元素)
注意: 代码一:二层循环暴力查找超时 代码二(最棒):借用STL set中的count()方法快速搞定,且没有超时so,集合查询应该很快注意:count()时间复杂度是线性变换的最坏的情况为O(n)s ...
- 二分查找发(对半查找法)
问题描述: 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果 ...
- StringBuffer+排序+二分查找+包装类+正则表达式+常用类
一.StringBuffer 1.概述 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间.而StringBuffer就可以解决这个问题StringBuffe ...
- 常考数据结构与算法-NC105 二分查找-II
描述 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存 ...
- 二分查找--AVL查找树
Data Mining 开启阅读模式 二分查找--AVL查找树 二分查找可以找到元素在数组中的下标位置,而查找树由于采用的是树结构,所以只能判断出元素是不是在树中以及给出最大/小值,而不能确定指定元素 ...
- pat-1057 Stack 树状数组+二分查找
题意 给我们一个n表示操作数量 然后三种操作 push和pop 还有求中位数的操作 让我们根据操作输出正确的解 分析 用sort排序做 或者 map标记法都会超时 考虑更快的方法 如何快速找到给定一串 ...
- 二分查找算法实现(图解)与实例
现在我们来玩一个猜数的游戏,假设有一个人要我们猜0-99之间的一个数.那么最好的方法就是从0-99的中间数49开始猜.如果要猜的数小于49,就猜24(0-48的中间数):如果要猜的数大于49,就猜74 ...
最新文章
- [InnoDB系列] - InnoDB独立/共享表空间的转换
- C#反射使用方法过程及步骤
- 设计模式 | 适配器模式及典型应用
- c语言 显示 图形界面,「分享」C语言如何编写图形界面
- char *a 与char a[] 的区别和char** argv与char *argv[]区别
- Python--第4次平时作业
- 数据科学 python_如何使用Python为数据科学建立肌肉记忆
- 电气专业学python吗_985大学毕业起薪最高的五个专业,计算机、金融、电气上榜!...
- 第七讲 塔木德破产分配法练习题
- DPDK报文分类与访问控制
- 新手小白安装linux系统
- 你为什么总是很忙碌,却还在原地踏步!
- 钉钉小程序复选框 全选反选 表单获取内容有误处理
- 黑客30秒攻破苹果iOS系统夺得大赛冠军
- 软件架构设计 大型网站技术架构与业务架构融合之道
- 关于深度学习理论和架构的最新综述(part3)
- 维基解密创始人被捕,从“天才黑客”到“阶下之囚”
- 网络磁干扰仿真测试软件,电磁仿真软件有哪些?电磁仿真软件专辑推荐!
- 卷积神经网络概念及使用 PyTorch 简单实现
- 听音乐赚钱App,每天听歌收益5美金,保姆级教学,被动收入人人可做