📜  门|门CS 2008 |第 84 题

📅  最后修改于: 2021-09-25 04:37:50             🧑  作者: Mango

考虑以下 C 程序,该程序尝试使用二分搜索在数组 Y[] 中定位元素 x。程序是错误的。

1.   f(int Y[10], int x) {
2.     int i, j, k;
3.     i = 0; j = 9;
4.     do {
5.             k =  (i + j) /2;
6.             if( Y[k] < x)  i = k; else j = k;
7.         } while(Y[k] != x && i < j);
8.     if(Y[k] == x) printf ("x is in the array ") ;
9.     else printf (" x is not in the array ") ;
10. }

程序在 Y 和 x 的下列哪个内容上失败?
(A) Y 是 [1 2 3 4 5 6 7 8 9 10] 并且 x < 10
(B) Y 是 [1 3 5 7 9 11 13 15 17 19] 并且 x < 1
(C) Y 是 [2 2 2 2 2 2 2 2 2 2] 并且 x > 2
(D) Y 是 [2 4 6 8 10 12 14 16 18 20] 并且 2 < x < 20 并且 x 是偶数答案: (C)
说明:见https://www.geeksforgeeks.org/data-structures-and-algorithms-set-21/的问题3
这个问题的测验