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.

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.

Similar Reads

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

Selection Sort Program in C

C // C program for implementation of selection sort #include    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; }...

Working of Selection Sort in C

...