二分查找的两种写法
2015-10-17 02:06
344 查看
其实还是经常写二分的,也知道二分查找有好多写法,然而一直没有总结一下。现单独开一篇备忘。
我通常的二分写法是:
对于数组中有重复元素,而要求返回第一个元素的下标(lower_bound)时,可以这么写:
例如对于数组 1 1 2 3 4 5 6 7 9,查找1,那么第一种写法返回1,第二种写法返回0
对于其他写法,以后有时间再补充。
我通常的二分写法是:
int binarysearch(int *a, int n, int d) { int left = 0, right = n - 1; while (left < right) { int mid = (left + right) / 2; if (a[mid] < d) { left = mid; } else if (a[mid] > d) { right = mid - 1; } else { return mid; } } return -1; }
对于数组中有重复元素,而要求返回第一个元素的下标(lower_bound)时,可以这么写:
int binarysearch(int *a, int n, int d) { int left = 0, right = n - 1; while (left < right) { int mid = (left + right) / 2; if (a[mid] < d) { left = mid + 1; } else { right = mid; } } if (left == right && a[left] == d) { return left; } return -1; }
例如对于数组 1 1 2 3 4 5 6 7 9,查找1,那么第一种写法返回1,第二种写法返回0
对于其他写法,以后有时间再补充。
相关文章推荐
- CF Round #325 Div2 D. Phillip and Trains
- Ueditor实现自定义conttoller请求或跨域请求
- 利用ueditor的文件上传功能上传文件到外部服务器的地址&&&&&字符统计功能重写
- 转载:简单字典转模型
- [PCB制作] 1、记录一个简单的电路板的制作过程——四线二项步进电机驱动模块(L6219)
- 错误处理的一些想法
- 基于HTML5 WebGL实现3D飞机叶轮旋转
- [实践]基于WebSocket,Spring开发消息系统后台
- CentOS下设置中文编码设置和中文乱码解决
- 数据库事务隔离级别
- POJ 1836 Alignment(DP | LIS)
- Lumen 配合使用Dingo/Api的问题。
- 标识项目完成状态
- Eclipse配置--智能补全
- *LeetCode-Palindrome Permutation
- JS学习笔记(02)——节点对象
- Amazon OA2准备——SJF java实现
- 【Python之旅】第七篇(三):使用Redis订阅服务
- Tomcat无法正常启动startup.bat 一闪而过、只显示USING 故障排除
- KVC 与 KVO 理解