/media/sda-magnetic/david/Dokumente-15-2023-11-22/informatik/algorithmen/sort.c


/*
- Selection Sort
- Insertion Sort
- Bubble Sort
- Shellsort
- Distribution counting
- Quicksort
- Digitales Sortieren
- Radix Exchange Sort
- Straight Radix Sort 
- Prioritätswarteschlangen
- Heapsort
- Mergesort
- Externes Sortieren ...
*/

#include <stdio.h>

void selection (int [], int);
void insertion (int [], int);
void bubble (int [], int);
int fib (int);
void fibonacci (int);

void selection (int a [], int N) {
    int i, j, min, t;
    
    for (i = 1;  i < N;  i++) {
        min = i;
        for (j = i+1;  j <= N;  j++) 
            if (a [j] < a [min])
                min = j;
        t = a [min];
        a [min] = a [i];
        a [i] = t;
    }
}

void insertion (int a [], int N) {
    int i, j, v;
    
    for (i = 2;  i <= N;  i++) {
        v = a [i]; 
        j = i;
        while (a [j-1] > v) {
            a [j] = a [j-1];
            j--;
        }
        a [j] = v;
    }
}

void bubble (int a [], int N) {
    int i, j, t;
    
    for (i = N;  i >= 1;  i--) {
        for (j = 2;  j <= i;  j++) {
            if (a[j-1] > a [j]) {
                t = a [j-1];
                a [j-1] = a [j];
                a [j] = t;
            }
        }
    }
}

/*
Fibonacci Zahlen 
*/


int fib (int n) {
    if (n == 0) return 0;
    else if (n == 1) return 1;
    else if (n > 1) return fib (n-1) + fib (n-2);
    return 0;
}

void fibonacci (int n) {
    int a = 0;
    int b = 1;
    int i;
    
    for (i = 0;  i < n;  i++) {
        a = a+b;
        b = b+a;
        printf ("%i %i ", a, b);
    }
}

/*
 * 1+2+3+...+n = SUM_{k=1}^n {k} = (n*(n+1))/2
 * */

int main (void) {
    fibonacci (10);
}