ISRO | ISRO CS 2018 | Question 24

• Difficulty Level : Easy
• Last Updated : 07 Sep, 2020

An array A consists of n integers in locations A, A ….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;

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 imin then the control goes out of the while loop in the initial case when i=0 and min=n

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

My Personal Notes arrow_drop_up