# Modify an array by sorting after reversal of bits of each array element

Given an array arr[] consisting of N integers, the task is to modify the array by replacing each array element with the number obtained by reversing their respective binary representations and sort the modified array.

Examples:

Input: arr[ ] = {43, 422, 132}
Output: 33 53 203
Explanation
The binary representation of the array elements are {101011, 110100110, 10000100}.
Reversed binary representations are {110101, 011001011,  0010000}.
Equivalent numeric values of the reversed binary representations are {53, 203, 33}.
Sorted order of these elements are {33, 53, 203}.

Input: arr[ ] ={ 98, 43, 66, 83}
Output: 33 35 53 101

Approach: Follow the steps below to solve the problem:

Below is the implementation of the above approach:

## C++14

 // C++ implementation of // the above approach   #include using namespace std;   // Function to convert binary // number to equivalent decimal int binaryToDecimal(string n) {     string num = n;     int dec_value = 0;       // Set base value to 1, i.e 2^0     int base = 1;       int len = num.length();     for (int i = len - 1; i >= 0; i--) {         if (num[i] == '1')             dec_value += base;         base = base * 2;     }       return dec_value; }   // Function to convert a decimal // to equivalent binary representation string decimalToBinary(int n) {     // Stores the binary representation     string binstr = "";       while (n > 0) {           // Since ASCII value of         // '0', '1' are 48 and 49         binstr += (n % 2 + 48);         n = n / 2;     }       // As the string is already reversed,     // no further reversal is required     return binstr; }   // Function to convert the reversed binary // representation to equivalent integer int reversedBinaryDecimal(int N) {     // Stores reversed binary     // representation of given decimal     string decimal_to_binar         = decimalToBinary(N);       // Stores equivalent decimal     // value of the binary representation     int binary_to_decimal         = binaryToDecimal(decimal_to_binar);       // Return the resultant integer     return binary_to_decimal; }   // Utility function to print the sorted array void printSortedArray(int arr[], int size) {     // Sort the array     sort(arr, arr + size);       // Traverse the array     for (int i = 0; i < size; i++)           // Print the array elements         cout << arr[i] << " ";       cout << endl; }   // Utility function to reverse the // binary representations of all // array elements and sort the modified array void modifyArray(int arr[], int size) {     // Traverse the array     for (int i = 0; i < size; i++) {           // Passing array elements to         // reversedBinaryDecimal function         arr[i] = reversedBinaryDecimal(             arr[i]);     }       // Pass the array to     // the sorted array     printSortedArray(arr, size); }   // Driver Code int main() {     int arr[] = { 98, 43, 66, 83 };     int n = sizeof(arr) / sizeof(arr[0]);       modifyArray(arr, n);       return 0; }

## Java

 // Java implementation of // the above approach import java.io.*; import java.util.*;   class GFG{       // Function to convert binary // number to equivalent decimal static int binaryToDecimal(String n) {     String num = n;     int dec_value = 0;        // Set base value to 1, i.e 2^0     int base = 1;        int len = num.length();     for(int i = len - 1; i >= 0; i--)     {         if (num.charAt(i) == '1')             dec_value += base;                       base = base * 2;     }     return dec_value; }    // Function to convert a decimal // to equivalent binary representation static String decimalToBinary(int n) {           // Stores the binary representation     String binstr = "";        while (n > 0)     {                   // Since ASCII value of         // '0', '1' are 48 and 49         binstr += (char)(n % 2 + 48);         n = n / 2;     }        // As the string is already reversed,     // no further reversal is required     return binstr; }    // Function to convert the reversed binary // representation to equivalent integer static int reversedBinaryDecimal(int N) {           // Stores reversed binary     // representation of given decimal     String decimal_to_binar = decimalToBinary(N);        // Stores equivalent decimal     // value of the binary representation     int binary_to_decimal = binaryToDecimal(         decimal_to_binar);        // Return the resultant integer     return binary_to_decimal; }    // Utility function to print the sorted array static void printSortedArray(int arr[], int size) {           // Sort the array     Arrays.sort(arr);        // Traverse the array     for(int i = 0; i < size; i++)               // Print the array elements         System.out.print(arr[i] + " ");        System.out.println(); }    // Utility function to reverse the // binary representations of all // array elements and sort the modified array static void modifyArray(int arr[], int size) {           // Traverse the array     for(int i = 0; i < size; i++)     {                   // Passing array elements to         // reversedBinaryDecimal function         arr[i] = reversedBinaryDecimal(arr[i]);     }        // Pass the array to     // the sorted array     printSortedArray(arr, size); }    // Driver Code   public static void main(String[] args) {     int arr[] = { 98, 43, 66, 83 };     int n = arr.length;           modifyArray(arr, n); } }   // This code is contributed by rag2127

## Python3

 # Python3 implementation of # the above approach   # Function to convert binary # number to equivalent decimal def binaryToDecimal(n):       num = n     dec_value = 0       # Set base value to 1, i.e 2^0     base = 1       length = len(num)           for i in range(length - 1, -1, -1):         if (num[i] == '1'):             dec_value += base                       base = base * 2       return dec_value   # Function to convert a decimal # to equivalent binary representation def decimalToBinary(n):       # Stores the binary representation     binstr = ""       while (n > 0):           # Since ASCII value of         # '0', '1' are 48 and 49         binstr += chr(n % 2 + 48)         n = n // 2       # As the string is already reversed,     # no further reversal is required     return binstr   # Function to convert the reversed binary # representation to equivalent integer def reversedBinaryDecimal(N):       # Stores reversed binary     # representation of given decimal     decimal_to_binar = decimalToBinary(N)       # Stores equivalent decimal     # value of the binary representation     binary_to_decimal = binaryToDecimal(         decimal_to_binar)       # Return the resultant integer     return binary_to_decimal   # Utility function to print the sorted array def printSortedArray(arr, size):       # Sort the array     arr.sort()       # Traverse the array     for i in range(size):           # Print the array elements         print(arr[i], end=" ")       print()   # Utility function to reverse the # binary representations of all # array elements and sort the modified array def modifyArray(arr, size):       # Traverse the array     for i in range(size):           # Passing array elements to         # reversedBinaryDecimal function         arr[i] = reversedBinaryDecimal(arr[i])       # Pass the array to     # the sorted array     printSortedArray(arr, size)   # Driver Code if __name__ == "__main__":       arr = [ 98, 43, 66, 83 ]     n = len(arr)       modifyArray(arr, n)   # This code is contributed by ukasp



## C#

 using System; using System.Linq;   class GFG {     // Function to convert binary     // number to equivalent decimal     static int BinaryToDecimal(string n)     {         string num = n;         int dec_value = 0;           // Set base1 value to 1, i.e 2^0         int base1 = 1;           int len = num.Length;         for (int i = len - 1; i >= 0; i--)         {             if (num[i] == '1')                 dec_value += base1;               base1 = base1 * 2;         }         return dec_value;     }       // Function to convert a decimal     // to equivalent binary representation     static string DecimalToBinary(int n)     {           // Stores the binary representation         string binstr = "";           while (n > 0)         {               // Since ASCII value of             // '0', '1' are 48 and 49             binstr += (char)(n % 2 + 48);             n = n / 2;         }           // As the string is already reversed,         // no further reversal is required         return new string(binstr.ToArray());     }       // Function to convert the reversed binary     // representation to equivalent integer     static int ReversedBinaryDecimal(int N)     {           // Stores reversed binary         // representation of given decimal         string decimal_to_binar = DecimalToBinary(N);           // Stores equivalent decimal         // value of the binary representation         int binary_to_decimal = BinaryToDecimal(             decimal_to_binar);           // Return the resultant integer         return binary_to_decimal;     }       // Utility function to print the sorted array     static void PrintSortedArray(int[] arr, int size)     {           // Sort the array         Array.Sort(arr);           // Traverse the array         for (int i = 0; i < size; i++)               // Print the array elements             Console.Write(arr[i] + " ");           Console.WriteLine();     }       // Utility function to reverse the     // binary representations of all     // array elements and sort the modified array     static void ModifyArray(int[] arr, int size)     {           // Traverse the array         for (int i = 0; i < size; i++)         {               // Passing array elements to             // ReversedBinaryDecimal function             arr[i] = ReversedBinaryDecimal(arr[i]);         }           // Pass the array to         // the sorted array         PrintSortedArray(arr, size);     }       // Driver Code     public static void Main(string[] args)     {         int[] arr = { 98, 43, 66, 83 };         int n = arr.Length;           ModifyArray(arr, n);     } }

Output:

33 35 53 101

Time Complexity: O(NlogN)
Auxiliary Space: O(log2M), where M denotes the maximum element present in the array.

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Previous
Next