Ordenar una array de strings según la longitud de las strings

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: 

  1. Inicialice la string con las palabras de entrada.
  2. Calcula la longitud de la cuerda.
  3. 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. 
  4. 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>
Producción

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:

  1. Inicialice la string con las palabras de entrada.
  2. Calcula la longitud de la cuerda.
  3. Compare las strings y devuelva la más pequeña.
  4. Ordene la array de strings con la ayuda de la función de clasificación incorporada.
  5. 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.
Producción

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

  1. Tome la string como una lista.
  2. 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
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *