Program to sort an array of strings using Selection Sort

Last Updated : 09 Feb, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

Given an array of strings, sort the array using Selection Sort.

Examples: 

Input  : paper true soap floppy flower
Output : floppy, flower, paper, soap, true


Prerequisite : Selection Sort

C++
// C++ program to implement selection sort for
// array of strings.
#include <bits/stdc++.h>
#include <string.h>
using namespace std;
#define MAX_LEN 100

// Sorts an array of strings where length of every
// string should be smaller than MAX_LEN
void selectionSort(char arr[][MAX_LEN], int n)
{
    int i, j, min_idx;

    // One by one move boundary of unsorted subarray
    char minStr[MAX_LEN];
    for (i = 0; i < n-1; i++)
    {
        // Find the minimum element in unsorted array
        int min_idx = i;
        for (j = i + 1; j < n; j++)
        {
            // If min is greater than arr[j]
            if (arr[j]<arr[min_idx])
            {
                // Make arr[j] as minStr and update min_idx
                min_idx = j;
            }
        }

        // Swap the found minimum element with the first element
        if (min_idx != i)
        {
          //swap item[min_idx] and item[i]
            swap(arr[i],arr[min_idx]);
        }
    }
}

// Driver code
int main()
{
    char arr[][MAX_LEN] = {"GeeksforGeeks", "Practice.GeeksforGeeks",
                                                    "GeeksQuiz"};
    int n = sizeof(arr)/sizeof(arr[0]);
    int i;

    cout<<"Given array is\n";
    for (i = 0; i < n; i++)
        cout << i << ": " << arr[i] << endl;

    selectionSort(arr, n);

    cout << "\nSorted array is\n";
    for (i = 0; i < n; i++)
        cout << i << ": " << arr[i] << endl;

    return 0;
}

// This is code is contributed by rathbhupendra
C
// C program to implement selection sort for
// array of strings.
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
 
// Sorts an array of strings where length of every
// string should be smaller than MAX_LEN
void selectionSort(char arr[][MAX_LEN], int n)
{
    int i, j, min_idx;
 
    // One by one move boundary of unsorted subarray
    char minStr[MAX_LEN];
    for (i = 0; i < n-1; i++)
    {
        // Find the minimum element in unsorted array
        int min_idx = i;
        strcpy(minStr, arr[i]);
        for (j = i+1; j < n; j++)
        {
            // If min is greater than arr[j]
            if (strcmp(minStr, arr[j]) > 0)
            {
                // Make arr[j] as minStr and update min_idx
                strcpy(minStr, arr[j]);
                min_idx = j;
            }
        }
 
        // Swap the found minimum element with the first element
        if (min_idx != i)
        {
            char temp[MAX_LEN];
            strcpy(temp, arr[i]); //swap item[pos] and item[i]
            strcpy(arr[i], arr[min_idx]);
            strcpy(arr[min_idx], temp);
        }
    }
}
 
// Driver code
int main()
{
    char arr[][MAX_LEN] = {"GeeksforGeeks", "Practice.GeeksforGeeks",
                                                    "GeeksQuiz"};
    int n = sizeof(arr)/sizeof(arr[0]);
    int i;
 
    printf("Given array is\n");
    for (i = 0; i < n; i++)
        printf("%d: %s \n", i, arr[i]);
 
    selectionSort(arr, n);
 
    printf("\nSorted array is\n");
    for (i = 0; i < n; i++)
        printf("%d: %s \n", i, arr[i]);
 
    return 0;
}
Java
// Java program to implement selection sort
// on array of strings
import java.util.*;
import java.io.*;

class Main 
{
    
// Sorts an array of strings
static void selectionSort(String arr[],int n)
{
    // One by one move boundary of unsorted subarray
    for(int i = 0; i < n - 1; i++)
    {
    
        // Find the minimum element in unsorted array
        int min_index = i;
        String minStr = arr[i];
        for(int j = i + 1; j < n; j++) 
        {
            
            /*compareTo() will return a -ve value, 
            if string1 (arr[j]) is smaller than string2 (minStr)*/
            // If arr[j] is smaller than minStr
        
            if(arr[j].compareTo(minStr) < 0) 
            { 
                // Make arr[j] as minStr and update min_idx
                minStr = arr[j];
                min_index = j;
            }
        }

    // Swapping the minimum element 
    // found with the first element.
    if(min_index != i)
    {
        String temp = arr[min_index];
        arr[min_index] = arr[i]; 
        arr[i] = temp; 
    }
    }
}

// Driver code
public static void main(String args[])
{
    String arr[] = {"GeeksforGeeks", 
                    "Practice.GeeksforGeeks", 
                    "GeeksQuiz"};
    int n = arr.length;
        System.out.println("Given array is");
         
    // Printing the array before sorting
    for(int i = 0; i < n; i++)
    {
        System.out.println(i+": "+arr[i]);
    }
    System.out.println();

    selectionSort(arr, n);

    System.out.println("Sorted array is");
    
    // Printing the array after sorting
    for(int i = 0; i < n; i++)
    {
        System.out.println(i+": "+arr[i]);
    }
}
}

/*This code is contributed by rajesh999*/
Python3
# Python program to implement Selection Sort for
#  array of strings

# Function defined for sorting the array of strings
def Selection(arr,n):
  
    # One by one move boundary of unsorted subarray
    for i in range(n):
        min_index = i
        min_str = arr[i]
        
        # Find the minimum element in unsorted subarray
        for j in range(i+1,n):
            
            # If min_str is greater than arr[j]
            if min_str>arr[j]:
                
                # Make arr[j] as min_str and update min_index as j
                min_str = arr[j]
                min_index = j
                
        # Swap the found minimum element with the first element       
        if min_index != i:
            
            # Store the first element in temp
            temp = arr[i]
            
            # Place the min element at the first position
            arr[i] = arr[min_index]
            
            # place the element in temp at min_index
            arr[min_index] = temp
     
    # Return the sorted array
    return arr

arr = ["GeeksforGeeks", "Practice.GeeksforGeeks", "GeeksQuiz"]

print("Given array is")
for i in range(len(arr)):
    print(i,":",arr[i])

print("\nSorted array is")
for i in range(len(Selection(arr,len(arr)))):
    print(i,":",Selection(arr,len(arr))[i])
            
# This code is contributed by Manish KC
# profile: mkumarchaudhary06
C#
// C# program to implement selection sort 
// on array of strings 
using System;

class GFG{
    
// Sorts an array of strings 
static void selectionSort(string[] arr, int n) 
{ 
    
    // One by one move boundary of
    // unsorted subarray 
    for(int i = 0; i < n - 1; i++) 
    { 
        
        // Find the minimum element in 
        // unsorted array 
        int min_index = i; 
        string minStr = arr[i]; 
        
        for(int j = i + 1; j < n; j++)  
        { 
              
            /*compareTo() will return a -ve value,  
            if string1 (arr[j]) is smaller than 
            string2 (minStr)*/
            // If arr[j] is smaller than minStr 
          
            if (arr[j].CompareTo(minStr) != 0)  
            {  
                
                // Make arr[j] as minStr and 
                // update min_idx 
                minStr = arr[j]; 
                min_index = j; 
            } 
        } 
  
        // Swapping the minimum element  
        // found with the first element. 
        if (min_index != i) 
        { 
            string temp = arr[min_index]; 
            arr[min_index] = arr[i];  
            arr[i] = temp;  
        } 
    } 
} 

// Driver Code
static void Main() 
{
    string[] arr = { "GeeksforGeeks",  
                     "Practice.GeeksforGeeks",  
                     "GeeksQuiz" }; 
    int n = arr.Length; 
    Console.WriteLine("Given array is"); 
           
    // Printing the array before sorting 
    for(int i = 0; i < n; i++) 
    {
        Console.WriteLine(i + ": " + arr[i]); 
    } 
    Console.WriteLine(); 
    
    selectionSort(arr, n); 
    
    Console.WriteLine("Sorted array is"); 
      
    // Printing the array after sorting 
    for(int i = 0; i < n; i++) 
    { 
        Console.WriteLine(i + ": " + arr[i]); 
    } 
}
}

// This code is contributed by divyesh072019
JavaScript
<script>
    // Javascript program to implement selection sort on array of strings
    
    // Sorts an array of strings
    function selectionSort(arr, n)
    {

        // One by one move boundary of
        // unsorted subarray
        for(let i = 0; i < n - 1; i++)
        {

            // Find the minimum element in
            // unsorted array
            let min_index = i;
            let minStr = arr[i];

            for(let j = i + 1; j < n; j++) 
            {

                /*compareTo() will return a -ve value, 
                if string1 (arr[j]) is smaller than
                string2 (minStr)*/
                // If arr[j] is smaller than minStr

                if ((arr[j]).localeCompare(minStr) === -1) 
                { 

                    // Make arr[j] as minStr and
                    // update min_idx
                    minStr = arr[j];
                    min_index = j;
                }
            }

            // Swapping the minimum element 
            // found with the first element.
            if (min_index != i)
            {
                let temp = arr[min_index];
                arr[min_index] = arr[i]; 
                arr[i] = temp; 
            }
        }
    }
    
    let arr = [ "GeeksforGeeks", 
                     "Practice.GeeksforGeeks", 
                     "GeeksQuiz" ];
    let n = arr.length;
    document.write("Given array is" + "</br>");
            
    // Printing the array before sorting
    for(let i = 0; i < n; i++)
    {
        document.write(i + ": " + arr[i] + "</br>");
    }
    document.write("</br>");
     
    selectionSort(arr, n);
     
    document.write("Sorted array is" + "</br>");
       
    // Printing the array after sorting
    for(let i = 0; i < n; i++)
    {
        document.write(i + ": " + arr[i] + "</br>");
    }
 
 // This code is contributed by vaibhavrabadiya117.
</script>

Output
Given array is
0: GeeksforGeeks
1: Practice.GeeksforGeeks
2: GeeksQuiz

Sorted array is
0: GeeksQuiz
1: GeeksforGeeks
2: Practice.GeeksforGeeks

Time Complexity: O(n2), where n represents the size of the character array.
Auxiliary Space: O(100), no extra space is required, so it is a constant.



 


 


Next Article
Article Tags :
Practice Tags :

Similar Reads