Sort the given Array after sorting each number individually
Last Updated :
05 Sep, 2022
Given an array arr of size N, the task is to sort the digits of each element in the array and then sort the array in non-decreasing order. Print the array after sorting.
Examples:
Input: arr[] = {514, 34, 41, 39}
Output: 41 43 93 541
Explanation:
Sorting each element of the array: arr[] = {145, 34, 14, 39}
Sorting the array: arr[] = {14, 34, 39, 145}
Input: arr[] = {3, 1, 9, 4}
Output: 1 3 4 9
Approach: Follow the steps below to solve this problem:
- Create a function toString, which will accept the integer N as an parameter and will return N the form of string.
- Pass each element of array arr in function toString to convert it to string. Sort that string and convert it back to an integer. After this, replace each element with the converted integer in array arr.
- Sort the array arr and print the answer according to the above observation.
Below is the implementation of the above approach.
C++
#include <bits/stdc++.h>
using namespace std;
void printArray( int arr[], int N)
{
for ( int i = 0; i < N; i++)
cout << arr[i] << " " ;
}
string toString( int N)
{
string s;
while (N > 0) {
s += (N % 10) + '0' ;
N /= 10;
}
if (s.size() == 0) {
s = "0" ;
}
return s;
}
void digitSort( int arr[], int N)
{
for ( int i = 0; i < N; i++) {
string s = toString(arr[i]);
sort(s.begin(), s.end());
arr[i] = stoi(s);
}
sort(arr, arr + N);
printArray(arr, N);
}
int main()
{
int arr[] = { 514, 34, 41, 39 };
int N = sizeof (arr) / sizeof (arr[0]);
digitSort(arr, N);
return 0;
}
|
Java
import java.util.*;
class GFG{
static void printArray( int arr[], int N)
{
for ( int i = 0 ; i < N; i++)
System.out.print(arr[i] + " " );
}
static String toString( int N)
{
String s = "" ;
while (N > 0 ) {
s += String.valueOf((N % 10 )) + '0' ;
N /= 10 ;
}
if (s.length() == 0 ) {
s = "0" ;
}
return s;
}
static void digitSort( int arr[], int N)
{
for ( int i = 0 ; i < N; i++) {
String s = toString(arr[i]);
s = sort(s);
arr[i] = Integer.valueOf(s);
}
Arrays.sort(arr);
printArray(arr, N);
}
static String sort(String inputString)
{
char tempArray[] = inputString.toCharArray();
Arrays.sort(tempArray);
return new String(tempArray);
}
public static void main(String[] args)
{
int arr[] = { 514 , 34 , 41 , 39 };
int N = arr.length;
digitSort(arr, N);
}
}
|
Python3
def printArray(arr, N):
for i in range ( 0 , N):
print (arr[i], end = " " )
def toString(N):
s = ""
while (N > 0 ):
s + = chr ( int (N % 10 ) + ord ( '0' ))
N / = 10
if ( len (s) = = 0 ):
s = "0"
return s
def digitSort(arr, N):
for i in range ( 0 , N):
s = toString(arr[i])
s = list (s)
s.sort()
s = ''.join(s)
arr[i] = int (s)
arr.sort()
printArray(arr, N)
if __name__ = = "__main__" :
arr = [ 514 , 34 , 41 , 39 ]
N = len (arr)
digitSort(arr, N)
|
C#
using System;
using System.Collections;
class GFG
{
static void printArray( int []arr, int N)
{
for ( int i = 0; i < N; i++)
Console.Write(arr[i] + " " );
}
static String toString( int N)
{
string s = "" ;
while (N > 0) {
int val = N % 10;
s += val.ToString();
N /= 10;
}
if (s.Length == 0) {
s = "0" ;
}
return s;
}
static void digitSort( int []arr, int N)
{
int []ans = new int [N];
for ( int i = 0; i < N; i++) {
String s = toString(arr[i]);
char []ch = s.ToCharArray();
Array.Sort(ch);
ans[i] = Int32.Parse(String.Join( "" ,ch));
arr[i] = Int32.Parse(s);
}
Array.Sort(ans);
printArray(ans, N);
}
public static void Main()
{
int []arr = { 514, 34, 41, 39 };
int N = arr.Length;
digitSort(arr, N);
}
}
|
Javascript
<script>
function printArray(arr, N)
{
for (let i = 0; i < N; i++)
document.write(arr[i] + " " );
}
function toString(N)
{
let s = "" ;
while (N > 0)
{
s = s + (N % 10).toString();
N = Math.floor(N / 10);
}
if (s.length == 0)
{
s = "0" ;
}
return s;
}
function digitSort(arr, N)
{
for (let i = 0; i < N; i++)
{
let s = arr[i].toString();
st = s.split( '' )
st.sort( function (a, b){
return a.charCodeAt(0) -
b.charCodeAt(0); });
s = '' ;
for (let i = 0; i < st.length; i++)
{
s = s + st[i];
}
arr[i] = parseInt(s);
}
arr.sort( function (a, b){ return a - b })
printArray(arr, N);
}
let arr = [ 514, 34, 41, 39 ];
let N = arr.length;
digitSort(arr, N);
</script>
|
Time Complexity: O(N log N), the inbuilt sort function takes N log N time.
Auxiliary space: O(1), since constant extra space is used.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...