C++ Program for sorting Digits of a given Number

C++ Program for sorting Digits of a given Number

In this article we are going to learn about that how can we sort the digits of a number in increasing order or decreasing order when we are given a Number 'N'.

Let's understand with the help of an example given below: -

Let you be given a number N = 983712

Example 1: Ascending Order(Increasing Order)

Result = 123789

Example 2: Descending Order(Decreasing Order)

Result = 987321

Algorithm to solve the Problem

Step 1: First you will extract all the digits of a number.

Step 2: Store all the extracted digits into a vector.

Step 3: And then use the sort() function to sort the digits of a number.

Step 4: After that join all digits from index 0 to (count of digit - 1) from the vector to which you had applied the sort() function.

Step 5: Finally Print the sorted number that you would have obtained from step 4.

Let's see the implementation for the above approach: -

#include<bits/stdc++.h>
using namespace std;

int sortingDigits(int n){
    // array of the digits of a number
    vector<int> digits;
    int count = 0;
    while(n != 0){
        digits.push_back(n%10);
        n = n/10;      
        count++;  
    }
    // Sorting the digits of number by using the sort() function
    sort(digits.begin(), digits.end());
    int sortedNumber = 0;
    // Here we are obtaining the number from the sorted digits 
    for(int i = 0; i < digits.size(); sortedNumber += (digits[i]*pow(10, count-1)), count--, i++);
    return sortedNumber;
}

void printSortedNumber(int number){
    cout << "Sorted Number in Ascending Order: ";
    cout << number;
    cout << endl;
}

signed main(){
    int number1 = 312;
    int sortedNumber1 = sortingDigits(number1);
    printSortedNumber(sortedNumber1);

    int number2 = 9782647;
    int sortedNumber2 = sortingDigits(number2);
    printSortedNumber(sortedNumber2);

    int number3 = 22221211;
    int sortedNumber3 = sortingDigits(number3);
    printSortedNumber(sortedNumber3);

    return 0;
}

Output:

Sorted Number in Ascending Order: 123

Sorted Number in Ascending Order: 2467789

Sorted Number in Ascending Order: 11122222

Time Complexity: O(nlogn)

Auxiliary Space: O(nlogn)

Let's see the implementation for Descending Order(Decreasing Order)

#include<bits/stdc++.h>
using namespace std;

int sortingDigits(int n){
    // array of the digits of a number
    vector<int> digits;
    int count = 0;
    while(n != 0){
        digits.push_back(n%10);
        n = n/10;      
        count++;  
    }
    // Sorting the digits of number by using the sort() function
    sort(digits.begin(), digits.end(), greater<int>());
    int sortedNumber = 0;
    // Here we are obtaining the number from the sorted digits 
    for(int i = 0; i < digits.size(); sortedNumber += (digits[i]*pow(10, count-1)), count--, i++);
    return sortedNumber;
}

void printSortedNumber(int number){
    cout << "Sorted Number in Descending Order: ";
    cout << number;
    cout << endl;
}

signed main(){
    int number1 = 312;
    int sortedNumber1 = sortingDigits(number1);
    printSortedNumber(sortedNumber1);

    int number2 = 9782647;
    int sortedNumber2 = sortingDigits(number2);
    printSortedNumber(sortedNumber2);

    int number3 = 22221211;
    int sortedNumber3 = sortingDigits(number3);
    printSortedNumber(sortedNumber3);

    return 0;
}

Output:

Sorted Number in Descending Order: 321

Sorted Number in Descending Order: 9877642

Sorted Number in Descending Order: 22222111

Time Complexity: O(nlogn)

Auxiliary Space: O(nlogn)