給定一整數陣列 a[0]、a[1]、…、a[99]且 a[k]=3k+1,
以 value=100 呼叫以下兩函式,
假設函式 f1 及 f2 之 while 迴圈主體分別執行 n1 與 n2 次
(i.e, 計算 if 敘述執行次數,不包含 else if 敘述),
請問 n1 與 n2 之值為何?
註: (low + high)/2 只取整數部分- int f1(int a[], int value)
- {
- int r_value = -1;
- int i = 0;
- while (i < 100)
- {
- if (a[i] == value)
- {
- r_value = i; break;
- }
- i = i + 1;
- }
- return r_value;
- }
- int f2(int a[], int value)
- {
- int r_value = -1;
- int low = 0, high = 99; int mid;
- while (low <= high)
- {
- mid = (low + high)/2;
- if (a[mid] == value)
- {
- r_value = mid; break;
- }
- else if (a[mid] < value)
- {
- low = mid + 1;
- }
- else
- {
- high = mid - 1;
- }
- }
- return r_value;
- }
複製代碼 (A) n1=33, n2=4
(B) n1=33, n2=5
(C) n1=34, n2=4
(D) n1=34, n2=5 |