diff options
Diffstat (limited to 'src/sort.c')
| -rw-r--r-- | src/sort.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/sort.c b/src/sort.c new file mode 100644 index 0000000..6ea4b26 --- /dev/null +++ b/src/sort.c @@ -0,0 +1,41 @@ +#include "utils.h" +#include <stdio.h> +void bubblesort(int a[], int n) { + int comparisons = 0; + for (int i = 0; i < n; i++) { + for (int j = 1; j < n - i; j++) { + comparisons++; + if (a[j - 1] > a[j]) { + swap(a, j, j - 1); + } + } + printarr(a, n); + printf("\n"); + } +} + +void selectionsort(int a[], int n) { + for (int i = 0; i < n; i++) { + int small = i; + for (int j = i; j < n; j++) { + if (a[j] < a[small]) { + small = j; + } + } + swap(a, i, small); + printarr(a, n); + printf("\n"); + } +} + +void insertionsort(int a[], int n) { + for (int i = 1; i < n; i++) { + int j = i; + while (j > 0 && a[j - 1] > a[j]) { + swap(a, j, j - 1); + j--; + } + printarr(a, n); + printf("\n"); + } +} |
