Skip to content

Commit

Permalink
selection-sort.c
Browse files Browse the repository at this point in the history
  • Loading branch information
Abhinandan323 authored Oct 29, 2022
2 parents 5854ce4 + 7fcc337 commit 16bc704
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions C/selection-sort.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Selection sort in C

#include <stdio.h>

// function to swap the the position of two elements
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}

void selectionSort(int array[], int size) {
for (int step = 0; step < size - 1; step++) {
int min_idx = step;
for (int i = step + 1; i < size; i++) {

// To sort in descending order, change > to < in this line.
// Select the minimum element in each loop.
if (array[i] < array[min_idx])
min_idx = i;
}

// put min at the correct position
swap(&array[min_idx], &array[step]);
}
}

// function to print an array
void printArray(int array[], int size) {
for (int i = 0; i < size; ++i) {
printf("%d ", array[i]);
}
printf("\n");
}

// driver code
int main() {
int data[] = {20, 12, 10, 15, 2};
int size = sizeof(data) / sizeof(data[0]);
selectionSort(data, size);
printf("Sorted array in Acsending Order:\n");
printArray(data, size);
}

0 comments on commit 16bc704

Please sign in to comment.