Nos dan una array de strings, necesitamos ordenar la array en orden creciente de longitudes de string.
Ejemplos:
Input : {"GeeksforGeeeks", "I", "from", "am"} Output : I am from GeeksforGeeks Input : {"You", "are", "beautiful", "looking"} Output : You are looking beautiful
Una solución simple es escribir nuestra propia función de clasificación que compare longitudes de strings para decidir qué string debe aparecer primero. A continuación se muestra la implementación, que utiliza la ordenación por inserción para ordenar la array.
Algoritmo:
- Inicialice la string con las palabras de entrada.
- Calcula la longitud de la cuerda.
- Ordene la array de strings de acuerdo con la longitud de las palabras en orden ascendente con la ayuda de la ordenación por inserción.
- Imprime la array ordenada.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to sort an Array of // Strings according to their lengths #include<iostream> using namespace std; // Function to print the sorted array of string void printArraystring(string,int); // Function to Sort the array of string // according to lengths. This function // implements Insertion Sort. void sort(string s[], int n) { for (int i=1 ;i<n; i++) { string temp = s[i]; // Insert s[j] at its correct position int j = i - 1; while (j >= 0 && temp.length() < s[j].length()) { s[j+1] = s[j]; j--; } s[j+1] = temp; } } // Function to print the sorted array of string void printArraystring(string str[], int n) { for (int i=0; i<n; i++) cout << str[i] << " "; } // Driver function int main() { string arr[] = {"GeeksforGeeks", "I", "from", "am"}; int n = sizeof(arr)/sizeof(arr[0]); // Function to perform sorting sort(arr, n); // Calling the function to print result printArraystring(arr, n); return 0; }
Java
// Java program to sort an Array of // Strings according to their lengths import java.util.*; class solution { // Function to print the sorted array of string // void printArraystring(string,int); // Function to Sort the array of string // according to lengths. This function // implements Insertion Sort. static void sort(String []s, int n) { for (int i=1 ;i<n; i++) { String temp = s[i]; // Insert s[j] at its correct position int j = i - 1; while (j >= 0 && temp.length() < s[j].length()) { s[j+1] = s[j]; j--; } s[j+1] = temp; } } // Function to print the sorted array of string static void printArraystring(String str[], int n) { for (int i=0; i<n; i++) System.out.print(str[i]+" "); } // Driver function public static void main(String args[]) { String []arr = {"GeeksforGeeks", "I", "from", "am"}; int n = arr.length; // Function to perform sorting sort(arr,n); // Calling the function to print result printArraystring(arr, n); } }
Python3
# Python3 program to sort an Array of # Strings according to their lengths # Function to print the sorted array of string def printArraystring(string, n): for i in range(n): print(string[i], end = " ") # Function to Sort the array of string # according to lengths. This function # implements Insertion Sort. def sort(s, n): for i in range(1, n): temp = s[i] # Insert s[j] at its correct position j = i - 1 while j >= 0 and len(temp) < len(s[j]): s[j + 1] = s[j] j -= 1 s[j + 1] = temp # Driver code if __name__ == "__main__": arr = ["GeeksforGeeks", "I", "from", "am"] n = len(arr) # Function to perform sorting sort(arr, n) # Calling the function to print result printArraystring(arr, n) # This code is contributed by # sanjeev2552
C#
// C# program to sort an Array of // Strings according to their lengths using System; public class solution{ // Function to print the sorted array of string // void printArraystring(string,int); // Function to Sort the array of string // according to lengths. This function // implements Insertion Sort. static void sort(String []s, int n) { for (int i=1 ;i<n; i++) { String temp = s[i]; // Insert s[j] at its correct position int j = i - 1; while (j >= 0 && temp.Length < s[j].Length) { s[j+1] = s[j]; j--; } s[j+1] = temp; } } // Function to print the sorted array of string static void printArraystring(String []str, int n) { for (int i=0; i<n; i++) Console.Write(str[i]+" "); } // Driver function public static void Main() { String []arr = {"GeeksforGeeks", "I", "from", "am"}; int n = arr.Length; // Function to perform sorting sort(arr,n); // Calling the function to print result printArraystring(arr, n); } } // This code is contributed by Rajput-Ji
Javascript
<script> // Javascript program to sort an Array of // Strings according to their lengths // Function to print the sorted array of string // void printArraystring(string,int); // Function to Sort the array of string // according to lengths. This function // implements Insertion Sort. function sort(s, n) { for (let i = 1 ; i < n; i++) { let temp = s[i]; // Insert s[j] at its correct position let j = i - 1; while (j >= 0 && temp.length < s[j].length) { s[j + 1] = s[j]; j--; } s[j + 1] = temp; } } // Function to print the sorted array of string function printArraystring(str, n) { for (let i = 0; i < n; i++) document.write(str[i]+" "); } let arr = ["GeeksforGeeks", "I", "from", "am"]; let n = arr.length; // Function to perform sorting sort(arr,n); // Calling the function to print result printArraystring(arr, n); // This code is contributed by vaibhavrabadiya117. </script>
I am from GeeksforGeeks
Complejidad de tiempo: O(n*m) , donde m es la longitud de la string y n es el tamaño de la array de entrada.
Espacio Auxiliar: O(1)
Una mejor solución es utilizar la función de clasificación que proporcionan los lenguajes de programación como C++, Java. Estas funciones también nos permiten escribir nuestro propio comparador personalizado. A continuación se muestra la implementación de C++ que utiliza la función de clasificación STL de C++ .
Algoritmo:
- Inicialice la string con las palabras de entrada.
- Calcula la longitud de la cuerda.
- Compare las strings y devuelva la más pequeña.
- Ordene la array de strings con la ayuda de la función de clasificación incorporada.
- Imprime la array ordenada.
A continuación se muestra la implementación del enfoque anterior:
CPP
#include <bits/stdc++.h> using namespace std; // Function to check the small string bool compare(string &s1,string &s2) { return s1.size() < s2.size(); } // Function to print the sorted array of string void printArraystring(string str[], int n) { for (int i=0; i<n; i++) cout << str[i] << " "; } // Driver function int main() { string arr[] = {"GeeksforGeeks", "I", "from", "am"}; int n = sizeof(arr)/sizeof(arr[0]); // Function to perform sorting sort(arr, arr+n, compare); // Calling the function to print result printArraystring(arr, n); return 0; }
Java
import java.util.Arrays; import java.util.Comparator; class GFG { // Function to check the small String // Function to print the sorted array of String static void printArrayString(String str[], int n) { for (int i = 0; i < n; i++) System.out.print(str[i] + " "); } // Driver function public static void main(String[] args) { String arr[] = { "GeeksforGeeks", "I", "from", "am" }; int n = arr.length; // Function to perform sorting Arrays.sort(arr, new Comparator<String>() { @Override public int compare(final String s1, final String s2) { return s1.length() < s2.length() ? -1 : 1; } }); // Calling the function to print result printArrayString(arr, n); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Function to check the small string function compare(s1, s2) { return s1.length - s2.length; } // Function to print the sorted array of string function printArraystring(str, n) { for (let i = 0; i < n; i++) document.write(str[i] + " "); } // Driver function let arr = ["GeeksforGeeks", "I", "from", "am"] let n = arr.length // Function to perform sorting arr.sort(compare); // Calling the function to print result printArraystring(arr, n); // This code is contributed by gfgking. </script>
Python3
from functools import cmp_to_key # Function to check the small string def compare(s1,s2): return len(s1) - len(s2) # Function to print the sorted array of string def printArraystring(str,n): for i in range(n): print(str[i],end = " ") # Driver function arr = ["GeeksforGeeks", "I", "from", "am"] n = len(arr) # Function to perform sorting arr.sort(key = cmp_to_key(compare)) # Calling the function to print result printArraystring(arr, n) # This code is contributed by shinjanpatra.
I am from GeeksforGeeks
Complejidad de tiempo: O (nlogn), donde n es el tamaño de la array.
Espacio Auxiliar: O(1)
Método 2: solución simplificada usando la función sorted() en python
- Tome la string como una lista.
- Use la función ordenada en python proporcionando la clave como len.
A continuación se muestra la implementación del enfoque anterior:
Python3
# Python code for the above approach def printsorted(arr): # Sorting using sorted function # providing key as len print(*sorted(arr, key=len)) # Driver code arr = ["GeeksforGeeks", "I", "from", "am"] # Passing list to printsorted function printsorted(arr) # this code is contributed by vikkycirus
I am from GeeksforGeeks
Complejidad de tiempo: O(nlogn)
Espacio auxiliar: O(1)
Este artículo es una contribución de Rishabh jain . 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.
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