[刷题]Search in a Big Sorted Array
2015-10-13 09:43
239 查看
[LintCode]Search in a Big Sorted Array
public class Solution { /** * @param A: An integer array * @param target: An integer * @return : An integer which is the index of the target number */ public int searchBigSortedArray(int[] A, int target) { // 2015-10-13 二分搜索的改进 if (A == null || A.length == 0) { return -1; } // 优化end以缩小搜索范围 int end = 0; while (end < A.length -1 && A[end] < target) { end = end * 2 + 1; if (end >= A.length) { end = A.length - 1; } } // 二分搜索 int start = 0; while (start < end - 1) { int mid = start + (end - start) / 2; if (A[mid] >= target) { end = mid; } else { start = mid; } } if (A[start] == target) { return start; } if (A[end] == target) { return end; } return -1; } }
相关文章推荐
- Android Studio常见问题总结
- vijosP1137 组合数
- python的程序格式要求
- java 队列知识整理
- iOS开发中实现hook消息机制的方法探究
- 快速开发平台网格部件合并单元格。
- onSaveInstanceState & onRestoreInstanceState
- MyEclipse中非动态项目转换为动态项目的方法
- 平均分配
- SVN global ignore pattern
- C#入门(一):IDE
- 判断一个字符是否为汉字
- SQL获取本周、本月、本年时间段值
- 各种皮肤病——谁用谁灵!
- C#网络编程《四》下
- oracle ora-各种常见java.sql.SQLException归纳
- C#入门(一):IDE
- 【开源】.net 分布式架构之业务消息队列
- hibernate显示和Ajax的异步显示
- 常用的正则表达式