京東校園招聘筆試真題
有一個有序表爲 {1,5,8,11,19,22,31,35,40,45,48,49,50} ,當二分查找值爲 48 的結點時,查找成功需要比較的次數( )
- A、4
- B、3
- C、2
- D、1
while(start <= end) {
int mid = (start + end) / 2;
if (target > array[i][mid]) {
start = mid + 1;
}else if (target < array[i][mid]) {
end = mid - 1;
}else {
return true;
}
}
記比較的中間節點位置爲mid
- 區間爲[0,12],mid=(0+12)/2=6,a[6]=48>31
- 區間爲[7,12],mid=(7+12)/2=9,a[9]=48>45
- 區間爲[10,12],mid=(10+12)/2=11,a[11]=48<49
- 區間爲[10,10],mid=(10+10)/2=10,a[10]=48=48