Sort the Array by reversing the numbers in it

• Last Updated : 29 Nov, 2021

Given an array arr[] of N non-negative integers, the task is to sort these integers according to their reverse.

Examples:

Input: arr[] = {12, 10, 102, 31, 15}
Output: 10 31 12 15 102
Reversing the numbers:
12 -> 21
10 -> 01
102 -> 201
31 -> 13
15 -> 51
Sorting the reversed numbers: 01 13 21 51 201
Original sorted array: 10 13 12 15 102

Input: arr[] = {12, 10}
Output: 10 12

Approach: The idea is to store each element with its reverse in a vector pair and then sort all the elements of the vector according to the reverse stored. Finally, print the elements in order.

Below is the implementation of the above approach:

C++

 // C++ implementation of the approach #include using namespace std; // Function to return the// reverse of nint reversDigits(int num){    int rev_num = 0;    while (num > 0) {        rev_num = rev_num * 10 + num % 10;        num = num / 10;    }    return rev_num;} // Function to sort the array according to// the reverse of elementsvoid sortArr(int arr[], int n){    // Vector to store the reverse    // with respective elements    vector > vp;     // Inserting reverse with elements    // in the vector pair    for (int i = 0; i < n; i++) {        vp.push_back(            make_pair(reversDigits(arr[i]),                      arr[i]));    }     // Sort the vector, this will sort the pair    // according to the reverse of elements    sort(vp.begin(), vp.end());     // Print the sorted vector content    for (int i = 0; i < vp.size(); i++)        cout << vp[i].second << " ";} // Driver codeint main(){    int arr[] = { 12, 10, 102, 31, 15 };    int n = sizeof(arr) / sizeof(arr);     sortArr(arr, n);     return 0;}

Java

 // Java implementation of the approachimport java.util.*;import java.lang.*;import java.io.*; class GFG{     // Function to return the// reverse of nstatic int reversDigits(int num){    int rev_num = 0;    while (num > 0)    {        rev_num = rev_num * 10 + num % 10;        num = num / 10;    }    return rev_num;}   // Function to sort the array according// to the reverse of elementsstatic void sortArr(int arr[], int n){         // Vector to store the reverse    // with respective elements    ArrayList vp = new ArrayList<>();       // Inserting reverse with elements    // in the vector pair    for(int i = 0; i < n; i++)    {        vp.add(new int[]{reversDigits(arr[i]),                                      arr[i]});    }       // Sort the vector, this will sort the pair    // according to the reverse of elements    Collections.sort(vp, (a, b) -> a - b);       // Print the sorted vector content    for(int i = 0; i < vp.size(); i++)        System.out.print(vp.get(i) + " ");}  // Driver codepublic static void main(String[] args){    int arr[] = { 12, 10, 102, 31, 15 };    int n = arr.length;         sortArr(arr, n);}} // This code is contributed by offbeat

Python3

 # Python3 implementation of the approach # Function to return the# reverse of ndef reversDigits(num) :     rev_num = 0;    while (num > 0) :        rev_num = rev_num * 10 + num % 10;        num = num // 10;     return rev_num; # Function to sort the array according to# the reverse of elementsdef sortArr(arr, n) :     # Vector to store the reverse    # with respective elements    vp = [];     # Inserting reverse with elements    # in the vector pair    for i in range(n) :        vp.append((reversDigits(arr[i]),arr[i]));     # Sort the vector, this will sort the pair    # according to the reverse of elements    vp.sort()     # Print the sorted vector content    for i in range(len(vp)) :        print(vp[i],end= " "); # Driver codeif __name__ == "__main__" :     arr = [ 12, 10, 102, 31, 15 ];    n = len(arr);     sortArr(arr, n); # This code is contributed by AnkitRai01

C#

 // C# implementation of the approachusing System;using System.Collections.Generic;class GFG{         // Function to return the    // reverse of n    static int reversDigits(int num)    {        int rev_num = 0;        while (num > 0)        {            rev_num = rev_num * 10 + num % 10;            num = num / 10;        }        return rev_num;    }          // Function to sort the array according to    // the reverse of elements    static void sortArr(int[] arr, int n)    {               // Vector to store the reverse        // with respective elements        List> vp = new List>();              // Inserting reverse with elements        // in the vector pair        for (int i = 0; i < n; i++)        {            vp.Add(new Tuple(reversDigits(arr[i]),arr[i]));        }              // Sort the vector, this will sort the pair        // according to the reverse of elements        vp.Sort();              // Print the sorted vector content        for (int i = 0; i < vp.Count; i++)            Console.Write(vp[i].Item2 + " ");    }   // Driver code  static void Main()  {    int[] arr = { 12, 10, 102, 31, 15 };    int n = arr.Length;      sortArr(arr, n);  }} // This code is contributed by divyesh072019

Javascript


Output:
10 31 12 15 102

Time Complexity: where N is the size of the array

Auxiliary Space: O(N)

My Personal Notes arrow_drop_up