C++ program to sort strings

In this article, you will learn and get code to sort string(s) in C++. Here is the list of programs that sort string(s) entered by the user at run-time:

Sort a string in ascending order in C++

This program sorts the string entered by the user in ascending order. For example, if the given string is bcabcz, then the same string in ascending order is abbccz. Let's have a look at the program:

The question is, "Write a program in C++ to sort a string in ascending order." Here is its answer:

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    char str[200], ch;
    int i, j, len;
    cout<<"Enter the String: ";
    gets(str);
    len = strlen(str);
    for(i=0; i<len; i++)
    {
        for(j=0; j<(len-1); j++)
        {
            if(str[j]>str[j+1])
            {
                ch = str[j];
                str[j] = str[j+1];
                str[j+1] = ch;
            }
        }
    }
    cout<<"\nString in Ascending Order: "<<str;
    cout<<endl;
    return 0;
}

This program was built and runs under the Code::Blocks IDE. Here is its sample run:

C++ program sort string

Now supply the input, say "codescracker," as a string, then press the ENTER key to sort it in ascending order and print the sorted string on the output as shown in the snapshot given below:

sort string in ascending order c++

The dry run of the above program with user input goes like this:

Note: To manually find the length of a string without using the strlen() function, see the find length of a string article for all of the necessary code.

In C++, sort the string in descending order

To sort the string in descending order, just change the following condition in the if statement:

if(str[j]>str[j+1])

with the code given below:

if(str[j]<str[j+1])

The entire program can be reversed with just a greater than (>) and less than (<) sign.

Here is its sample run with the same user input as the previous program, that is codescracker:

sort string in descending order c++

Sort the string (names) in alphabetical order

To sort strings (names) in alphabetical order in C++ programming, you have to ask the user to enter a few names (strings). Then sort these entered strings or names in alphabetical order as shown in the program given below:

This program only receives 5 names from the user at runtime. The question is: write a program in C++ to sort five names entered by the user in alphabetical order. Here is its answer:

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
    char nameAll[5][20], nameOne[20];
    int i, j;
    cout<<"Enter 5 Strings (Names): ";
    for(i=0; i<5; i++)
        cin>>nameAll[i];
    for(i=1; i<5; i++)
    {
        for(j=1; j<5; j++)
        {
            if(strcmp(nameAll[j-1], nameAll[j])>0)
            {
                strcpy(nameOne, nameAll[j-1]);
                strcpy(nameAll[j-1], nameAll[j]);
                strcpy(nameAll[j], nameOne);
            }
        }
    }
    cout<<"\nStrings (Names) in Alphabetical order:\n";
    for(i=0; i<5; i++)
        cout<<nameAll[i]<<endl;
    cout<<endl;
    return 0;
}

Here is the initial output produced by this program:

sort string in alphabetical order c++

Now, provide any five strings (names) and press the ENTER key to sort all five names alphabetically. Now print strings (arranged in alphabetical order) as shown in the output given below:

c++ sort names in alphabetical order

Allow the user to customize the size of the names

Now this program allows the user to enter the size. That is how many names the user wants to enter. And then sort all those names in alphabetical order as shown here in the following program:

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
    int i, j, tot;
    char nameAll[50][20], nameOne[20];
    cout<<"How many String to Enter (Max.50) ? ";
    cin>>tot;
    cout<<"Enter "<<tot<<" Strings (Names): ";
    for(i=0; i<tot; i++)
        cin>>nameAll[i];
    for(i=1; i<tot; i++)
    {
        for(j=1; j<tot; j++)
        {
            if(strcmp(nameAll[j-1], nameAll[j])>0)
            {
                strcpy(nameOne, nameAll[j-1]);
                strcpy(nameAll[j-1], nameAll[j]);
                strcpy(nameAll[j], nameOne);
            }
        }
    }
    cout<<"\nStrings (Names) in Alphabetical order:\n";
    for(i=0; i<tot; i++)
        cout<<nameAll[i]<<endl;
    cout<<endl;
    return 0;
}

Here is its sample run with user input of 7 names:

sort string name c++

The same program in different languages

C++ Quiz


« Previous Program Next Program »


Liked this post? Share it!