An array A consists of n integers in locations A[0], A[1] ….A[n-1]. It is required to shift the elements of the array cyclically to the left by k places, where 1 <= k <= (n-1). An incomplete algorithm for doing this in linear time, without using another array is given below. Complete the algorithm by filling in the blanks. Assume alt the variables are suitably declared.

min = n; i = 0; while (___________) { temp = A[i]; j = i; while (________) { A[j] = ________ j= (j + k) mod n ; If ( j< min ) then min = j; } A[(n + i — k) mod n] = _________ i = __________

**(A)** i > min; j!= (n+i)mod n; A[j + k]; temp; i + 1 ;**(B)** i < min; j!= (n+i)mod n; A[j + k]; temp; i + 1;
**(C)** i > min; j!= (n+i+k)mod n; A[(j + k)]; temp; i + 1;**(D)** i < min; j!= (n+i-k)mod n; A[(j + k)mod n]; temp; i + 1;**Answer:** **(D)****Explanation:** In the five blanks given in the question, the last two blanks must be temp and i+1 because all the given options for the fourth and fifth blanks have temp and i+1.

Now, for the first blank, it must be i

So, the first blank is i < min which implies either option (B) or option (D) is correct.

Assume option (B) is correct then in the bracket of while we have j!=(n+i)modn

That means whenever j becomes equal to (n+i)modn then control goes out of the while loop.

Now (n+i)modn=i and j is always equal to i because in line 3 of the code we are assigning the value of i to j.

So, if option (B) is true control never enters the second while loop but it has to enter the second while loop to shift the nos. K places left.

Hence, option (D) is correct.

Quiz of this Question

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.