# Selection Sort in C Language

**Selection sort** is a *simple in-place comparison-based sorting algorithm* that sorts an array by repeatedly finding the minimum element from the unsorted part of the array and moving it to the beginning of the array. Here’s an implementation of the **selection sort algorithm** in C language:

```
#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]);
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr)/sizeof(arr[0]);
selectionSort(arr, n);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```

In the

function, we first find the minimum element from the unsorted part of the array and swap it with the first element. We then repeat this process for the remaining subarray until the entire array is sorted.**selectionSort**

The

function is a helper function that exchanges the values of two integer variables using pointers.**swap**

In the `main`

function, we create an integer array and call the

function to sort it. Finally, we print the sorted array to the console.**selectionSort**

The *time complexity of selection sort is O(n^2)*, which makes it inefficient for large arrays. However, it has the advantage of being simple to implement and requiring only a small amount of additional memory space.