How to Shuffle an array in C++

In this tutorial, we will solve how to shuffle a given array in C++ which is entered by the user. The size of the array and elements of the array we will take input from the user. We will create a function to shuffle the array of a given size which would take the array and array size as arguments. So, let’s see how to create the function.

Algorithm to create the shuffle function

  • First, we will initialize stand() with NULL
  • Then, we will traverse array from the back i.e. n-1
  • Now, we will assign j with the random array index.
  • Finally, swap the ith array element with the jth element which will shuffle the elements randomly
void shuffle (int arr[], int n) 
{
  
srand (time (NULL));
  
for (int i = n - 1; i > 0; i--)
    {
  
int j = rand () % i;
      
arr[i] = arr[i] + arr[j];      
arr[j] = arr[i] - arr[j];
arr[i] = arr[i] - arr[j];

} 
} 
  • Now, in the main function, we take input from the user.
  • First, we will input the array size and then the array elements and then we call the shuffle() function
  • At last print the array which is now shuffled. So, the whole code would look like as given below.

C++ Program to Shuffle an array

#include<iostream>

using namespace std;

void shuffle (int arr[], int n) 
{
srand (time (NULL));
  
for (int i = n - 1; i > 0; i--)
{
      
int j = rand () % i;
      
arr[i] = arr[i] + arr[j];
arr[j] = arr[i] - arr[j];
arr[i] = arr[i] - arr[j];

} 
} 
 
int main () 
{
int arr[20], n, i;
  
cout << "Enter the size of array(max. 20): ";
cin >> n;
  
cout << "Enter the element of array :\n";
  
for (i = 0; i < n; i++)
cin >> arr[i];
  
shuffle (arr, n);
  
cout << "\nshuffled array:";
  
for (i = 0; i < n; i++)
cout << " " << arr[i];
  
return 0;

}

Output:

Enter the size of array(max. 20): 5 
Enter the element of array :
1
2
3
4
5

shuffled array: 4 3 1 5 2

Note: In the given program to shuffle a given array in C++, it gives always different output for the same input.

Recommended Tutorial :

Leave a Reply

Your email address will not be published. Required fields are marked *