key tips
首先找到与目标元素相等的index,再通过二分法调整左右下标
algo1
由i,j表示要查找的子数组起止下标,记m =i + (j-i)/2。
首先通过二分查找法确定target是否存在于[i, j],
while(i < j) {
m = i + (j-i)/2;
if (a[m] == target) {
break;
}
if (a[n] > target) {
j = m -1;
} else {
i = m + 1;
}
}
确定target是否存在以及m后,通过二分查找法调整左右边界
while(a[i] < a[m]) {
int mid = i + (m-i)/2;
if (a[mid] < a[m]) {
i = mid+1;
}else {
i++;
}
}
网友评论