GATE | GATE-CS-2014-(Set-3) | Question 65

Consider the C function given below. Assume that the array listA contains n (> 0) elements, sorted in ascending order.

int ProcessArray(int *listA, int x, int n)
    int i, j, k;
    i = 0;
    j = n-1;
        k = (i+j)/2;
        if (x <= listA[k])
            j = k-1;
        if (listA[k] <= x)
            i = k+1;
    while (i <= j);
    if (listA[k] == x)
        return -1;

Which one of the following statements about the function ProcessArray is CORRECT?
(A) It will run into an infinite loop when x is not in listA.
(B) It is an implementation of binary search.
(C) It will always find the maximum element in listA.
(D) It will return −1 even when x is present in listA.

Answer: (B)


The function is iterative implementation of Binary Search.  

k keeps track of current middle element.

i and j keep track of left and right corners
of current subarray

Quiz of this Question

My Personal Notes arrow_drop_up