二分查找
来源:互联网 发布:淘宝怎么享受极速退款 编辑:程序博客网 时间:2024/06/02 04:03
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等
思路
先找到我们需要查找的值,然后往后找到第一个不等于这个值的下标
#include <iostream>using namespace std;int binSearch(const int s[], const int size, const int target){ int start = 0; int end = size - 1; int mid = (start+end)/2; while(s[mid] != target&&start <= end) { if(s[mid] < target) { start = mid + 1; mid = (start+end)/2; } if(s[mid] > target) { end = mid -1; mid = (start+end)/2; } } if(s[mid] != target) { return -1; } int tag = mid; for(int i = mid; i < size; i++) { tag = i; if(s[i] != target) { break; } } return tag-1;}int main() { int s[8] = {0,1,1,3,3,3,6,6};cout << binSearch(s,8,3) << endl; //输出5cout << binSearch(s,8,4) << endl; //输出-1 return 0;}
阅读全文
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- Oracle 表示系统前一个月表示方法
- Arduino IDE显示语言修改
- weak_ptr
- opencv 配置
- Algorithm之路二十二:Generate Parentheses
- 二分查找
- Kaggle案例之泰坦尼克船员幸存预测(sklearn机器学习库)
- java导出excel
- visual studio 写静态库文件时候,error:无法打开源文件“stdafx.h"
- java利用sigar获取电脑cpu 内存 硬盘使用率等信息
- web项目部署到CentOs 7上运行
- 洛谷二分答案
- Spring Cloud 中文网
- Redis命令