📜  门| GATE CS 2008 |第84章

📅  最后修改于: 2021-06-29 21:43:51             🧑  作者: 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 2]并且x> 2
(D) Y为[2 4 6 8 10 12 14 16 18 20]并且2 答案: (C)
说明:请参阅https://www.geeksforgeeks.org/data-structures-and-algorithms-set-21/的问题3
这个问题的测验