Shuffle Array Contents

This algorithm will take an array and shuffle the contents of the array. It will generate a random permutation of the array elements.

To solve this problem, we will swap elements starting from the last index to randomly generated an index in the array.

Input and Output

Input:
An array of integers: {1, 2, 3, 4, 5, 6, 7, 8}
Output:
Shuffle of array contents: 3 4 7 2 6 1 5 8 (Output may differ for next run)

Algorithm

randomArr(array, n)

Input: The array, number of elements.

Output: Shuffle the contents of the array.

Begin
   for i := n – 1 down to 1, do
      j := random number from 0 to i
      swap arr[i] and arr[j]
   done
End

Example

#include 
#include
#include 
using namespace std;

void display(int array[], int n) {
   for (int i = 0; i  0; i--) {
      int j = rand() % (i+1);           //randomly choose an index from 0 to i
      swap(arr[i], arr[j]);            //swap current element with element placed in jth location
   }
}

int main() {
   int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
   int n = 8;
   randomArr(arr, n);
   display(arr, n);
}

Output

4 7 8 2 6 3 5 1
Updated on: 2020-06-17T10:17:55+05:30

858 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements