Open In App

C Program for Selection Sort

Improve
Improve
Like Article
Like
Save
Share
Report

The selection sort algorithm sorts an array by repeatedly finding the minimum element (considering ascending order) from the unsorted subarray and putting it at the beginning of the sorted subarray. In this article, we will learn to write a C program to implement selection sort.

Approach

  • Initialize minimum value min_idx to location 0.
  • Traverse the array to find the minimum element in the array.
  • While traversing if any element smaller than min_idx is found then swap both values.
  • Then, increment min_idx to point to the next element.
  • Repeat until the array is sorted.

Selection Sort Algorithm in C

selectionSort(array, size)
loop i from 0 to size - 2
set minIndex as i
loop j from first unsorted to size - 1
check if array[j] < array[minIndex]
set minIndex as j
swap array[i] with array[minIndex]
end for
end selectionSort

Selection Sort Program in C

C




// C program for implementation of selection sort
#include <stdio.h>
  
void swap(int* xp, int* yp)
{
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
}
  
void selectionSort(int arr[], int n)
{
    int i, j, min_idx;
  
    // One by one move boundary of unsorted subarray
    for (i = 0; i < n - 1; i++) {
        // Find the minimum element in unsorted array
        min_idx = i;
        for (j = i + 1; j < n; j++)
            if (arr[j] < arr[min_idx])
                min_idx = j;
  
        // Swap the found minimum element with the first
        // element
        swap(&arr[min_idx], &arr[i]);
    }
}
  
/* Function to print an array */
void printArray(int arr[], int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}
  
// Driver program to test above functions
int main()
{
    int arr[] = { 64, 25, 12, 22, 11 };
    int n = sizeof(arr) / sizeof(arr[0]);
    selectionSort(arr, n);
    printf("Sorted array: \n");
    printArray(arr, n);
    return 0;
}


Output

Sorted array: 
11 12 22 25 64 

Complexity Analysis of Selection Sort

Time Complexity: O(N2), as there are two nested loops.
Auxiliary Space: O(1), as the only extra memory used is for temporary variable while swapping two values in Array.

Working of Selection Sort in C

In each pass, the minimum element is identified from the unsorted part of the array and placed at the beginning of the sorted part of the array. The sorted portion of the array gradually grows with each pass until the entire array becomes sorted.

Let’s take the example of the above array and see what happens in each pass using the below illustration.

working of selection sort in c

The resultant array is the sorted array.

Refer to the complete article on Selection Sort for a better understanding.



Last Updated : 14 Jul, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads