- C++ Programming Examples
- C++ Programming Examples
- C++: Hello World
- C++: Get Input
- C++: Print Integer
- C++: Add two numbers
- C++: Add, Sub, Multiply, Div
- C++: Add Digits
- C++: Find Average and Percentage
- C++: Find Arithmetic Mean
- C++: Sum of n Natural Numbers
- C++: Sum of n Numbers
- C++: Square's Area and Perimeter
- C++: Rectangle's Area and Perimeter
- C++: Triangle's Area and Perimeter
- C++: Area and Circumference
- C++: Find Simple Interest
- C++: Fahrenheit to Celsius
- C++: Celsius to Fahrenheit
- C++: Print Prime Numbers
- C++: Reverse a Number
- C++: Swap Two Numbers
- C++: Print Multiplication Table
- C++: Find Factorial of a Number
- C++: Find Factors of a Number
- C++: Find HCF and LCM
- C++: Create a Calculator
- C++: Count Digits in a Number
- C++: First and Last Digit Sum
- C++: Product of Number Digits
- C++: Sum of Squares of Digits
- C++: Interchange Digits of Number
- C++ if-else Programs
- C++: Check Even or Odd
- C++: Check Prime or Not
- C++: Check Alphabet or Not
- C++: Check Vowel or Not
- C++: Check Leap Year or Not
- C++: Check Reverse equals Original
- C++: Check Perfect Number
- C++: Check Palindrome or Not
- C++: Check Armstrong or Not
- C++: Divisibility Test
- C++: Find Labor Wage
- C++: Find Discounted Price
- C++: Find Shipping Charge
- C++: Find Telephone Bills
- C++: Calculate Student Grade
- C++: Largest of Two Numbers
- C++: Largest of Three Numbers
- C++ Number Conversion
- C++: Decimal to Binary
- C++: Decimal to Octal
- C++: Decimal to Hexadecimal
- C++: Binary to Decimal
- C++: Binary to Octal
- C++: Binary to Hexadecimal
- C++: Octal to Decimal
- C++: Octal to Binary
- C++: Octal to Hexadecimal
- C++: Hexadecimal to Decimal
- C++: Hexadecimal to Binary
- C++: Hexadecimal to Octal
- C++ Pattern Programs
- C++: Pattern Programs
- C++: Print Diamond Pattern
- C++: Print Floyd's Triangle
- C++: Print Pascal's Triangle
- C++ Array Programs
- C++: 1D Array Program
- C++: Linear Search
- C++: Binary Search
- C++: Largest Element in an Array
- C++: Smallest Element in an Array
- C++: Find Second Largest Element
- C++: Find Second Smallest Element
- C++: Sum of All Elements
- C++: Multiply All Elements
- C++: Element in Even Position
- C++: Element in Odd Position
- C++: Print Even Numbers in Array
- C++: Print Odd Numbers in Array
- C++: Count Even or Odd Numbers
- C++: Sum of Even or Odd Numbers
- C++: Count Positive, Negative, Zero
- C++: Reverse an Array
- C++: Insert an Element
- C++: Delete an Element
- C++: Merge two Arrays
- C++: Bubble Sort
- C++: Selection Sort
- C++: Insertion Sort
- C++: Common Elements
- C++: 2D Array Programs
- C++: Add Two Matrices
- C++: Subtract Two Matrices
- C++: Transpose Matrix
- C++: Multiply Two Matrices
- C++: 3D Array Programs
- C++ String Programs
- C++: Print String
- C++: Find String Length
- C++: Compare Two Strings
- C++: Copy String
- C++: String Concatenation
- C++: Reverse a String
- C++: Delete Vowels from a String
- C++: Delete a Word from a String
- C++: Count Characters in a String
- C++: Count Words in a String
- C++: Frequency of Words
- C++: Remove Spaces from Strings
- C++: Sort a String
- C++: Uppercase to Lowercase
- C++: Lowercase to Uppercase
- C++: Swap Two Strings
- C++: Check the Anagram or Not
- C++: Capitalize All Words in a String
- C++: Get Numbers from a String
- C++ File Programs
- C++: Read a File
- C++: Write Content to a File
- C++: Append Data to a File
- C++: Read and Display File
- C++: Copy a File
- C++: Merge Two Files
- Count Characters in a File
- C++: Capitalize Every Word
- C++: List Files in Directory
- C++: Delete a File
- C++: Encrypt and Decrypt a File
- C++ Misc Programs
- C++: Print ASCII Value
- C++: Add Binary Numbers
- C++: Generate Random Numbers
- C++: Print a Smiling Face
- C++: Days into Years and Months
- C++: Add Two Numbers using Pointer
- C++: Print Fibonacci Series
- C++: Generate Armstrong Numbers
- C++: Find nCr and nPr
- C++: Get IP Address
- C++: Print Date and Time
- C++: Shutdown and Restart Computer
- C++ Programming Tutorial
- C++ Tutorial
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
- Sort a string in descending order
- Sort strings (names) in alphabetical order
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:
Now supply the input, say "fresherearth," 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:
The dry run of the above program with user input goes like this:
- When the user enters a string, then it gets stored in str in a way that:
- str[0]=c
- str[1]=o
- str[2]=d
- and so on up until
- str[11]=r
- Now, using the function strlen(), the length of the string gets initialized to the len variable. Because the length is 12, len=12.
- Now the execution of the for loop begins. That is, i=0 and the condition i<len or 0<12 evaluates to be true, therefore program flow inside the loop.
- Inside the loop, there is another for loop. So j=0 and the condition j<(len-1) or 0<11 evaluates to be true, therefore program flow goes inside the loop.
- Now using if, we compared the string at the current index using j with its adjacent index using j+1.
- That is, the condition (of if) str[j]>str[j+1] or str[0]>str[1] or c>o evaluates to be false, therefore program flow does not go inside the if's body. But whenever the condition evaluates to be true, program flow goes inside the body and swaps the character.
- Now the program flow goes to the update part of the inner for loop and increments the value of j. Now j=1, and the condition again gets evaluated.
- The condition j<(len-1) or 1<11 evaluates to be true again, therefore program flow goes inside the loop. This process continues until the condition evaluates to be false.
- When the inner for loop's evaluation is completed, the program flow moves to the outer for loop's update section and increments the value of i. So i=1, and the condition again gets evaluated.
- The condition i<len or 1<12 evaluates to be true again, therefore program flow goes inside the loop again. This process continues until the condition is evaluated as false.
- In this way, the string gets sorted in ascending order.
- So just print the value of str after exiting from the outer for loop.
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 fresherearth:
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:
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:
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:
The same program in different languages
« Previous Program Next Program »