在排序数组中找出一个整数第一次出现的位置
2015-09-20 22:44
309 查看
对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。
给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
测试样例:
给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
测试样例:
[1,3,5,7,9],5,3
返回:1
int getPos(vector<int> A, int n, int val) { // write code here int i = 0; int pos = -1; bool val_in_arr = false; int l = 0; int r = n - 1; int mid; while(l <= r) { mid = (l + r) / 2; if(A[mid] == val) { if(val_in_arr == false) { val_in_arr = true; pos = mid; } else { if(mid < pos) pos = mid; } r = mid - 1; } else if(A[mid] < val) l = mid + 1; else r = mid - 1; } if(val_in_arr) return pos; else return -1; }
相关文章推荐
- [转]数据备份小笑话
- Linux系统调用列表
- 请求转发和重定向的区别
- 数据结构之---C语言实现栈的表达式求值(表达式树)
- 《大道至简》第一章读后感
- Effective C++ —— 杂项讨论(九)
- oracle学习之-----操作表中的数据
- apache 403 Forbidden
- 深入理解wifi
- D3序
- WCF Service部署在IIS上
- 我与今目标的爱恨情仇
- SSE2指令集
- 《计算机操作系统》总结一
- Maven权威指南-----1、介绍Apache Maven
- struts2框架搭建
- 字符串
- 百度地图瓦片原理 | 百度map使用教程
- register
- 模拟键盘事件 System.Windows.Forms.SendKeys