返回列表 發帖

APCS觀念題2017-03-04-1

本帖最後由 ray 於 2020-4-27 11:02 編輯

int A[8]={0, 2, 4, 6, 8, 10, 12, 14};
int Search (int x) {
int high = 7;
int low = 0;
while (high > low) {
int mid = (high + low)/2;
if (A[mid] <= x) {
low = mid + 1;
}
else {
high = mid;
}
}
return A[high];
}

1. 給定一個 1x8 的陣列 A, A = {0, 2, 4,6, 8, 10, 12, 14}。右側函式
Search(x) 真正目的是找到 A 之中大於 x
的最小值。然而,這個函式有誤。請問下列哪
個函式呼叫可測出函式有誤?
(A) Search(-1)
(B) Search(0)
(C) Search(10)
(D) Search(16)

技巧:找到return的值就很快可以驗證哪個選項必定錯誤
另外,雖然與解題無關,也要能快速看出這個search是在做二分搜尋

TOP

返回列表