← index
sort.c
Source: C2x.Examples/src/sort.c
#include <stdio.h>
#include <stdlib.h>

void sort(int data[static 2], unsigned int s);
void swap(int *a, int *b);
void print_array(int data[static 1], unsigned int s);

int main() {
    int values[7] = {19, 2, 42, 100, 55, 1};
    sort(values, 6);
    print_array(values, 6);
    return 0;
}

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

void sort(int data[static 2], unsigned int s) {
    if (s < 2)
        return;
    bool swapped = false;
    unsigned int len = s;
    do {
        swapped = false;
        for (unsigned int i = 1; i <= len - 1; ++i) {
            if (data[i - 1] > data[i]) {
                swap(&data[i - 1], &data[i]);
                swapped = true;
            }
        }
        len--;
    } while (swapped && len > 1);
}

void print_array(int arr[static 1], unsigned int sz) {
    for (unsigned int i = 0; i < sz; ++i) {
        printf("%d: %d\n", i, arr[i]);
    }
}