您的位置:首页 > 其它

[刷题]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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: