# Selection Sort Program in C

Selection sort is a simple sorting algorithm. This sorting algorithm is an in-place comparison-based algorithm in which the list is divided into two parts, the sorted part at the left end and the unsorted part at the right end. Initially, the sorted part is empty and the unsorted part is the entire list.

## Implementation in C

```#include <stdio.h>
#include <stdbool.h>

#define MAX 7

int intArray[MAX] = {4,6,3,2,1,9,7};

void printline(int count) {
int i;

for(i = 0;i < count-1;i++) {
printf("=");
}

printf("=\n");
}

void display() {
int i;
printf("[");

// navigate through all items
for(i = 0;i < MAX;i++) {
printf("%d ", intArray[i]);
}

printf("]\n");
}

void selectionSort() {
int indexMin,i,j;

// loop through all numbers
for(i = 0; i < MAX-1; i++) {

// set current element as minimum
indexMin = i;

// check the element to be minimum
for(j = i+1;j < MAX;j++) {
if(intArray[j] < intArray[indexMin]) {
indexMin = j;
}
}

if(indexMin != i) {
printf("Items swapped: [ %d, %d ]\n" , intArray[i], intArray[indexMin]);

// swap the numbers
int temp = intArray[indexMin];
intArray[indexMin] = intArray[i];
intArray[i] = temp;
}

printf("Iteration %d#:",(i+1));
display();
}
}

void main() {
printf("Input Array: ");
display();
printline(50);
selectionSort();
printf("Output Array: ");
display();
printline(50);
}
```

If we compile and run the above program, it will produce the following result −

## Output

```Input Array: [4 6 3 2 1 9 7 ]
==================================================
Items swapped: [ 4, 1 ]
Iteration 1#:[1 6 3 2 4 9 7 ]
Items swapped: [ 6, 2 ]
Iteration 2#:[1 2 3 6 4 9 7 ]
Iteration 3#:[1 2 3 6 4 9 7 ]
Items swapped: [ 6, 4 ]
Iteration 4#:[1 2 3 4 6 9 7 ]
Iteration 5#:[1 2 3 4 6 9 7 ]
Items swapped: [ 9, 7 ]
Iteration 6#:[1 2 3 4 6 7 9 ]
Output Array: [1 2 3 4 6 7 9 ]
==================================================
```
selection_sort_algorithm.htm
##### Kickstart Your Career

Get certified by completing the course