Big Sorting HackerRank Solution in C, C++, Java, Python

Consider an array of numeric strings where each string is a positive number with anywhere from  to 10^6 digits. Sort the array’s elements in non-decreasing, or ascending order of their integer values and return the sorted array.

Function Description

Complete the bigSorting function in the editor below.

bigSorting has the following parameter(s):

  • string unsorted[n]: an unsorted array of integers as strings

Returns

  • string[n]: the array sorted in numerical order

Input Format

The first line contains an integer,n, denoting the number of strings in unsorted.
Each of the n subsequent lines contains an integer string unsorted[i].

Constraints

  • 1<=n<=2*10^5
  • Each string is guaranteed to represent a positive integer without leading zeros.
  • The total number of digits across all strings in unsorted is between 1 and 10^6 (inclusive).

Sample Input 0

6
31415926535897932384626433832795
1
3
10
3
5

Sample Output 0

1
3
3
5
10
31415926535897932384626433832795
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

int cmp(const void *p, const void *q)
{
    char* s1 = *(char**)p;
    char* s2 = *(char**)q;
    int s1l=strlen(s1);
    int s2l=strlen(s2);
    if(s1l>s2l)
    	return 1;
    if(s2l>s1l)
    	return -1;
    int i,flag=0;
    for(i=0;i<s1l;i++)
    {
    	if(s1[i]==s2[i])
    		continue;
    	else
    	{
    		flag=1;
    		break;
    	}
    }
    if(flag)
    {
    	return s1[i]-s2[i];
    }
    return 0;
}

int main(){
    int n,i,tl;
    scanf("%d\n",&n);
    char* str[n];
    char temp[1000001];
    for(i=0;i<n;i++)
    {
        scanf("%s",temp);
        tl=strlen(temp);
        str[i]=malloc(sizeof(char)*(tl+1));
    	strcpy(str[i],temp);
    }
    qsort((void*)str,n,sizeof(str[0]),cmp);
    for(i=0;i<n;i++)
        printf("%s\n",str[i]);
    return 0;
}

 

Big Sorting HackerRank Solution in C++

#include<iostream>
#include<fstream>
#include<math.h>
#include<algorithm>
#include<string>
#include<map>
#include<vector>
#include<queue>
#include<stack>
#include<sstream>
#include<set>

using namespace std;

#define forn(i,n) for(int i=0;i<(int)(n); i++)
#define forsn(i,s,n) for(int i=(s);i<(int)(n); i++)
#define esta(x,v) (find((v).begin(),(v).end(),(x)) !=  (v).end())
#define index(x,v) (find((v).begin(),(v).end(),(x)) - (v).begin())
#define debug(x) cout << #x << " = "  << x << endl
#define pb push_back
#define mp make_pair

typedef long long tint;
typedef unsigned long long utint;
typedef long double ldouble;

typedef vector<int> vint;

int toNumber (string s)
{
    int Number;
    if ( ! (istringstream(s) >> Number) ) Number = 0; // el string vacio lo manda al cero
    return Number;
}

string toString (int number)
{
    ostringstream ostr;
    ostr << number;
    return  ostr.str();
}

int main (){
    int n;
    cin>>n;
    vector< pair<int, string> > v;
    forn(i,n){
        string s;
        cin>>s;
        v.pb(mp((int)s.size(), s));
    }
    sort(v.begin(), v.end());
    forn(i, n){
        cout<<v[i].second<<endl;
    }
    
}

 

Big Sorting HackerRank Solution in Java

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String[] unsorted = new String[n];
        for (int unsorted_i = 0; unsorted_i < n; unsorted_i++) {
            unsorted[unsorted_i] = in.next();
        }

        Arrays.sort(unsorted, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if (o1.length() < o2.length()) {
                    return -1;
                }
                if (o1.length() > o2.length()) {
                    return 1;
                }
                return o1.compareTo(o2);
            }
        });

        for (String s : unsorted) {
            System.out.println(s);
        }
    }
}

 

Big Sorting HackerRank Solution in Python

#!/bin/python

import sys

a=  []
n = int(raw_input().strip())
unsorted = []
unsorted_i = 0
for unsorted_i in xrange(n):
    unsorted_t = str(raw_input().strip())
    unsorted.append(unsorted_t)
y=sorted(unsorted,key=int)
for i in range(0,len(y)):
    print y[i]

 

Big Sorting HackerRank Solution in C#

using System;

class Solution
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        string[] a = new string[n];

        for (int i = 0; i < n; ++i) a[i] = Console.ReadLine();

        Array.Sort(a, (s1, s2) =>
        {
            int l = s1.Length - s2.Length;
            return (l != 0) ? l : string.Compare(s1, s2, StringComparison.OrdinalIgnoreCase);
        });

        for (int i = 0; i < n; ++i) Console.WriteLine(a[i]);
    }
}

 

Attempt Big Sorting HackerRank Challenge 

Link – https://www.hackerrank.com/challenges/big-sorting/

Next HackerRank Challenge Solution 

Link – https://exploringbits.com/super-reduced-string-hackerrank-solution/

Leave a Comment