Sort an array of strings according to string lengths

2.2

We are given an array of strings, we need to sort the array in increasing order of string lengths.

Examples:

Input : {"GeeksforGeeeks", "I", "from", "am"}
Output : I am from GeeksforGeeks

Input :  {"You", "are", "beautiful", "looking"}
Output : You are looking beautiful

A simple solution is to write our own sort function that compares string lengths to decide which string should come first. Below is the C++ implementation that uses Insertion Sort to sort the array.

// 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;
}
 I am from GeeksforGeeks

A better solution is to use sort function provided by programming languages like C++, Java. These functions also allow us to write our own custom comparator. Below is C++ implementation that uses C++ STL Sort function.

#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;
}
 I am from GeeksforGeeks

This article is contributed by Rishabh jain. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

GATE CS Corner    Company Wise Coding Practice

Recommended Posts:



2.2 Average Difficulty : 2.2/5.0
Based on 4 vote(s)










Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.