sicily Binary Search 二分查找
来源:互联网 发布:辽宁省软件协会 编辑:程序博客网 时间:2024/06/07 18:24
题目
Description
实现二分查找函数,函数接口如下。
/* size为数组s的实际大小。
假定s非递减有序,如果s中存在值为target的元素,
则返回最后一次出现的位序号,否则返回-1表示不存在。
位序号从0开始计。*/
int binSearch(const int s[], const int size, const int target)
{
// 请将实现代码添加在这里
}
提交时只需提交上述函数,不要提交main()函数。
调用例子:
int s[8] = {0,1,1,3,3,3,6,6};
cout << binSearch(s,8,3) << endl; //输出5
cout << binSearch(s,8,4) << endl; //输出-1
Hint
不允许使用STL库里面的相关函数和库(否则可能会出现编译错误)
包括iostream, map, vector, set, algorithm, queue等
思考
二分查找基本思路
1、对比中间点的值与target的值的大小
2、折半继续重复第一步
参考:你真的会二分查找吗?
代码
#include <iostream>using namespace std;int binSearch(const int s[], const int size, const int target) { int lhs, rhs, mid; lhs = 0; rhs = size - 1; while (lhs < rhs) { mid = lhs + ((rhs-lhs)>>1); // 除二,这样除避免越界 if (s[mid] > target) { rhs = mid - 1; // 必须-1 } else { if (s[mid + 1] != target && s[mid] == target) return mid; //判断后续有无 lhs = mid + 1; // 必须+1 } } if (s[rhs] != target) return -1; return rhs;}int main(int argc, const char * argv[]) { // insert code here... int s[8] = {0,1,1,3,4,5,6,6}; cout << binSearch(s,8,3) << endl; //输出5 cout << binSearch(s,8,2) << endl; //输出-1 return 0;}
0 0
- sicily Binary Search 二分查找
- 二分查找(Binary Search)
- binary-search( 二分查找 )
- 二分查找Binary Search
- Binary Search二分查找
- 二分查找 Binary Search
- 二分查找(Binary Search)
- 二分查找 Binary Search
- Binary Search 二分查找
- Binary Search 二分查找
- Binary Search-二分查找
- 二分查找Binary Search
- 二分查找Binary Search
- 二分查找(binary search)
- 查找:二分查找(binary search)
- Binary Search 《二分查找》 1
- Binary Search 《二分查找》 2
- Binary Search 《二分查找》 3
- Java中List、Map、Set的遍历方式
- background.js Uncaught TypeError: Cannot read property 'xxx' of undefined
- poj3087 Shuffle'm Up 模拟
- 使用simhash算法对网页去重
- 前端利器:SASS基础与Compass入门
- sicily Binary Search 二分查找
- 转发和重定向的区别
- http://www.cnblogs.com/ifantastic/p/3185665.html
- Ubuntu14.04系统安装Python+机器学习(二)
- spark 存储json数据遇到问题——json4s使用(一)
- 开发的一些总结(1)
- 不知道在MFC中如何从线程工作函数中向窗口发送消息?用好一个指针就够了
- esource fork, Finder information, or similar detritus not allowed
- Android常用工具类