Sort the given string using character search

Given a string str of size n. The problem is to sort the given string without using any sorting techniques (like bubble, selection, etc). The string contains only lowercase characters.

Examples:

Input : geeksforgeeks
Output : eeeefggkkorss

Input : coding
Output : cdgino



Algorithm:

sortString(str, n)
    Initialize new_str = ""
    
    for i = 'a' to 'z'
        for j = 0 to n-1
            if str[j] == i, then
                new_str += str[j]

    return new_str

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to sort the given string without
// using any sorting technique
#include <bits/stdc++.h>
using namespace std;
  
// function to sort the given string without
// using any sorting technique
string sortString(string str, int n) {
  
  // to store the final sorted string
  string new_str = "";
  
  // for each character 'i'
  for (int i = 'a'; i <= 'z'; i++)
  
    // if character 'i' is present at a particular
    // index then add character 'i' to 'new_str'
    for (int j = 0; j < n; j++)
      if (str[j] == i)
        new_str += str[j];
  
  // required final sorted string
  return new_str;
}
  
// Driver program to test above
int main() {
  string str = "geeksforgeeks";
  int n = str.size();
  cout << sortString(str, n);
  return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation to sort the given 
// string without using any sorting technique
class GFG {
      
    // function to sort the given string 
    // without using any sorting technique
    static String sortString(String str, int n)
    {
  
        // to store the final sorted string
        String new_str = "";
  
        // for each character 'i'
        for (int i = 'a'; i <= 'z'; i++)
  
            // if character 'i' is present at a 
            // particular index then add character
            // 'i' to 'new_str'
            for (int j = 0; j < n; j++)
                if (str.charAt(j) == i)
                    new_str += str.charAt(j);
  
        // required final sorted string
        return new_str;
    }
      
    // Driver code
    public static void main(String[] args)
    {
        String str = "geeksforgeeks";
        int n = str.length();
          
        System.out.print(sortString(str, n));
    }
}
  
// This code is contributed by Anant Agarwal.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation to sort 
# the given string without using
# any sorting technique
  
# Function to sort the given string 
# without using any sorting technique
def sortString(str, n):
  
    # To store the final sorted string
    new_str = ""
  
    # for each character 'i'
    for i in range(ord('a'), ord('z') + 1):
  
        # if character 'i' is present at a particular
        # index then add character 'i' to 'new_str'
        for j in range(n):
            if (str[j] == chr(i)):
                new_str += str[j]
  
    # required final sorted string
    return new_str
  
# Driver Code
str = "geeksforgeeks"
n = len(str)
print(sortString(str, n))
  
# This code is contributed by Anant Agarwal.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation to sort the given
// string without using any sorting technique
using System;
  
class GFG {
      
    // function to sort the given string
    // without using any sorting technique
    static String sortString(String str, int n)
    {
        // to store the final sorted string
        String new_str = "";
  
        // for each character 'i'
        for (int i = 'a'; i <= 'z'; i++)
  
            // if character 'i' is present at a
            // particular index then add character
            // 'i' to 'new_str'
            for (int j = 0; j < n; j++)
                if (str[j] == i)
                    new_str += str[j];
  
        // required final sorted string
        return new_str;
    }
  
    // Driver code
    public static void Main()
    {
        String str = "geeksforgeeks";
        int n = str.Length;
  
        Console.Write(sortString(str, n));
    }
}
  
// This code is contributed by Sam007

chevron_right


Output :

eeeefggkkorss

Method 2:
In the above method we have to traverse the entire string every time for each of the character in set of ‘a’ to ‘z’.We can overcome this drawback by maintaining a character and filling it with number of the occurrence’s of all the characters in the string.Later we can construct the required sorted string from the character array.

Below is the implementation.

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to sort the given
// string without using any sorting technique
#include <iostream> 
using namespace std; 
  
string sortString(string str, int n) { 
int i;
//A character array to store the no.of occurances of each character
//between 'a' to 'z'
char arr[26]={0};
  
//to store the final sorted string 
string new_str = ""
  
//To store each occrance of character by relative indexing
for (i = 0; i < n; i++) 
   ++arr[str[i]-'a'];
  
  
//To traverse the character array and append it to new_str
for(i=0;i<26;i++)
  while(arr[i]--)
    new_str += i+'a'
  
return new_str; 
  
// Driver program to test above 
int main() { 
string str = "geeksforgeeks"
int n = str.size(); 
cout << sortString(str, n); 
return 0; 
  
// This code is contributed by Aravind Alapati

chevron_right


Output :

eeeefggkkorss


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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 Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : Aravind_Alapati