# Sort an array of strings according to string lengths

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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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.

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
2.2 Average Difficulty : 2.2/5.0
Based on 4 vote(s)