二分查找
来源:互联网 发布:百度地图纠偏数据库 编辑:程序博客网 时间:2024/05/30 23:32
问题描述
给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。
样例
在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。
解法
采用改进的二分查找法
注意:考虑 重复元素问题 与 未查到元素问题
public int binarySearch(int[] nums, int target) { return mybinarySearch(nums, target, 0, nums.length - 1); } public int mybinarySearch(int[] nums, int target, int begin, int end) { int i = (begin + end) / 2; if (begin == end) { return nums[i] == target ? i : -1; } if (nums[i] == target) { for (; nums[i] == target; i--); return ++i; } else if (nums[i] > target) { return mybinarySearch(nums, target, begin, i - 1); } else { return mybinarySearch(nums, target, i + 1, end); } }
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- ActiveMQ消息策略
- hdu1069-Monkey and Banana
- 例题7-9 UVA - 1601 && POJ 3523 The Morning after Halloween (双向BFS)
- ActiveMQ与虚拟通道
- MySQL学习15:子查询(一)
- 二分查找
- ActiveMQ与HA架构(master/slave)
- python shell 运行.py文件
- hdu_3562_B-number(记忆化搜索|数位DP)
- 计算机史话 —— 回车和换行 与 文本文件和二进制文件
- ActiveMQ分布式网络(Forward Bridge)
- centos 大文件操作
- Java平台架构
- LightOJ 1177 - Angry Programmer 最大流-最小割