Generate a random permutation of elements from range [L, R] (Divide and Conquer)

Given a range [L, R] where L ≤ R, the task is to generate a random permutation of the sequence [L, L + 1, L + 2, …, R].

Examples:

Input: L = 5, R = 15
Output: 11 9 6 5 8 7 10 12 13 15 14

Input: L = 10, R = 20
Output: 16 14 11 10 13 12 15 17 18 20 19

Approach: We will use Divide and Conquer algorithm for our solution. We will create a global vector that will store random numbers generated by our recursive function generate_random_permutation().
We will pass two arguments L (start) and R (end) to our recursive function. Inside the function it will call another function give_random_number that will return a number between X and Y. Lets call it N. We will store this random number in our vector and then we will call generate_random_permutation() function recursively for range [L, N – 1] and then for range [N + 1, R].
If L becomes greater than R then we will return from the function without performing any task, as this is our base condition.

Below is the implementation of the above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

chevron_right


Output:

11 9 6 5 8 7 10 12 13 15 14

Time Complexity: O(n)



My Personal Notes arrow_drop_up