# Rearrange an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ in C++

C++Server Side ProgrammingProgramming

#### C in Depth: The Complete C Programming Guide for Beginners

45 Lectures 4.5 hours

#### Practical C++: Learn C++ Basics Step by Step

Most Popular

50 Lectures 4.5 hours

#### Master C and Embedded C Programming- Learn as you go

66 Lectures 5.5 hours

We are given a positive integer type array, let's say, arr[] of any given size such that elements in an array should value greater than 0 but less than the size of an array. The task is to rearrange an array in such a manner that if arr[j] is ‘j’ then arr[j] becomes ‘i’ and print the final result.

## Let us see various input output scenarios for this −

Input − int arr[] = {3, 4, 1, 2, 0}

Outpu t− Array before Arrangement: 3 4 1 2 0 Rearrangement of an array such that arr[j] becomes i if arr[i] is j is: 4 2 3 0 1

Explanation − we are given an integer array of size 6 and all the elements in an array value less than 6. Now, we will rearrange the array i.e. arr is 4, arr = 1 ; arr is 1, arr = 2; arr is 2, arr = 3; arr is 0, arr =4. Therefore, the final array is 4 2 3 0 1.

Inpu t− int arr[] = {2, 0, 1, 3}

Output − Array before Arrangement: 2 0 1 3 Rearrangement of an array such that arr[j] becomes i if arr[i] is j is: 1 2 0 3

Explanation − we are given an integer array of size 6 and all the elements in an array value less than 6. Now, we will rearrange the array i.e. arr is 2, arr = 0 ; arr is 0, arr = 1; arr is 1, arr = 2; arr is 3, arr = 3. Therefore, the final array is 1 2 0 3.

## Approach used in the below program is as follows

• Input an array of integer type elements and calculate the size of an array.

• Print the array before arrangement and call the function Rearrangement(arr, size)

• Inside the function Rearrangement(arr, size)

• Create an array of integer type values as ptr[] of the same size as of array arr[].

• Start loop FOR, from i to 0 till i less than size. Inside the loop, set ptr[arr[i]] to i.

• Start loop FOR from i to 0 till i less than size. Inside the loop, set arr[i] to ptr[i].

• Print the array after the rearrangement of values of an array.

## Example

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
int ptr[size];
for(int i = 0; i < size; i++){
ptr[arr[i]] = i;
}
for(int i = 0; i < size; i++){
arr[i] = ptr[i];
}
}
int main(){
//input an array
int arr[] = {3, 4, 1, 2, 0};
int size = sizeof(arr) / sizeof(arr);
//print the original Array
cout<<"Array before Arrangement: ";
for (int i = 0; i < size; i++){
cout << arr[i] << " ";
}
//calling the function to rearrange the array
Rearrangement(arr, size);
//print the array after rearranging the values
cout<<"\nRearrangement of an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ is: ";
for(int i = 0; i < size; i++){
cout<< arr[i] << " ";
}
return 0;
}

## Output

If we run the above code it will generate the following Output

Array before Arrangement: 3 4 1 2 0
Rearrangement of an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ is: 4 2 3 0 1