Skip to content
Related Articles
Open in App
Not now

Related Articles

Algorithms | Searching | Question 6

Improve Article
Save Article
Like Article
  • Last Updated : 28 Jun, 2021
Improve Article
Save Article
Like Article

C++




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. }

In the above question, the correction needed in the program to make it work properly is (GATE CS 2008)

(A)

Change line 6 to: if (Y[k] < x) i = k + 1; else j = k-1;

(B)

Change line 6 to: if (Y[k] < x) i = k – 1; else j = k+1;

(C)

Change line 6 to: if (Y[k] <= x) i = k; else j = k;

(D)

Change line 7 to: } while ((Y[k] == x) && (i < j));


Answer: (A)

Explanation:

Below is the corrected function 

C




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

Reference: http://en.wikipedia.org/wiki/Binary_search_algorithm#Implementations


Quiz of this Question
Please comment below if you find anything wrong in the above post


My Personal Notes arrow_drop_up
Like Article
Save Article
Related Articles

Start Your Coding Journey Now!