Dada una array de números donde cada número se representa como una string. Los números pueden ser muy grandes (pueden no caber en long long int), la tarea es ordenar estos números.
Ejemplos:
Input : arr[] = {"5", "1237637463746732323", "12" }; Output : arr[] = {"5", "12", "1237637463746732323"}; Input : arr[] = {"50", "12", "12", "1"}; Output : arr[] = {"1", "12", "12", "50"};
A continuación se muestra la implementación de la idea anterior.
C++
// C++ program to sort large numbers represented // as strings. #include<bits/stdc++.h> using namespace std; // Returns true if str1 is smaller than str2. bool compareNumbers(string str1, string str2) { // Calculate lengths of both string int n1 = str1.length(), n2 = str2.length(); if (n1 < n2) return true; if (n2 < n1) return false; // If lengths are same for (int i=0; i<n1; i++) { if (str1[i] < str2[i]) return true; if (str1[i] > str2[i]) return false; } return false; } // Function for sort an array of large numbers // represented as strings void sortLargeNumbers(string arr[], int n) { sort(arr, arr+n, compareNumbers); } // Driver code int main() { string arr[] = {"5", "1237637463746732323", "97987", "12" }; int n = sizeof(arr)/sizeof(arr[0]); sortLargeNumbers(arr, n); for (int i=0; i<n; i++) cout << arr[i] << " "; return 0; }
Java
// Java program to sort large numbers represented // as strings. import java.io.*; import java.util.*; class main { // Function for sort an array of large numbers // represented as strings static void sortLargeNumbers(String arr[]) { // Refer below post for understanding below expression: // https://www.geeksforgeeks.org/lambda-expressions-java-8/ Arrays.sort(arr, (left, right) -> { /* If length of left != right, then return the diff of the length else use compareTo function to compare values.*/ if (left.length() != right.length()) return left.length() - right.length(); return left.compareTo(right); }); } // Driver code public static void main(String args[]) { String arr[] = {"5", "1237637463746732323", "97987", "12" }; sortLargeNumbers(arr); for (String s : arr) System.out.print(s + " "); } }
Python3
# Python3 program to sort large numbers # represented as strings # Function for sort an array of large # numbers represented as strings def sortLargeNumbers (arr, n): arr.sort(key = int) # Driver Code if __name__ == '__main__': arr = [ "5", "1237637463746732323", "97987", "12" ] n = len(arr) sortLargeNumbers(arr, n) for i in arr: print(i, end = ' ') # This code is contributed by himanshu77
C#
// C# program to sort large numbers // represented as strings. using System; class GFG { // Function for sort an array of large // numbers represented as strings static void sortLargeNumbers(String []arr) { // Refer below post for understanding // below expression: // https://www.geeksforgeeks.org/lambda-expressions-java-8/ for(int i = 0; i < arr.Length - 1; i++) { /* If length of left != right, then return the diff of the length else use compareTo function to compare values.*/ String left = arr[i], right = arr[i + 1]; if (left.Length > right.Length) { arr[i] = right; arr[i + 1] = left; i -= 2; } } } // Driver code public static void Main() { String []arr = {"5", "1237637463746732323", "97987", "12" }; sortLargeNumbers(arr); foreach (String s in arr) Console.Write(s + " "); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // JavaScript program to sort large numbers // represented as strings. // Function for sort an array of large numbers // represented as strings function sortLargeNumbers(arr) { // Refer below post for understanding // below expression: // https://www.geeksforgeeks.org/lambda-expressions-java-8/ for(let i = 0; i < arr.length - 1; i++) { /* If length of left != right, then return the diff of the length else use compareTo function to compare values.*/ let left = arr[i], right = arr[i + 1]; if (left.length > right.length) { arr[i] = right; arr[i + 1] = left; i -= 2; } } } // Driver Code let arr = ["5", "1237637463746732323", "97987", "12" ]; sortLargeNumbers(arr); for (let s in arr) document.write(arr[s] + " "); </script>
Producción:
5 12 97987 1237637463746732323
Complejidad de tiempo: O(k * n Log n), aquí se supone que la función sort() usa un algoritmo de clasificación O(n Log n).
Espacio Auxiliar: O(1)
Publicación similar:
ordenar números enteros grandes
Este artículo es una contribución de DANISH KALEEM . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA