Open In App

C Program for Selection Sort

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

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 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.

The resultant array is the sorted array.

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


Article Tags :