Multiple choice

Consider the following C program that attempts to locate an element x in an array Y[ ] using binary search. The program is erroneous.

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

The correction needed in the program to make it work properly is

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

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

  3. Change line 6 to : if Y[k] <= x) i = k; else j = k;

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

Reveal answer Fill a bubble to check yourself
A Correct answer
Explanation