/* * Bubblesort via Templates */ // Defaultsvergleichsfunktion fuer den Vergleich von Zahlen template int numcmp(T a, T b) { if (a>b) return 1; else if (a==b) return 0; else return -1; } // tauschen von 2 Elementen template void swap(T &a, T &b) { T c = a; a = b; b = c; } // Bubblesort - Template // arr = Array von zu sortierenden Elementen // len = Laenge des Arrays // cmp = Vergleichsfunktion für 2 Elemente - liefert >0, 0, <0 // Voreinstellung: numerischer Vergleich der Elemente (numcmp) template void bubblesort(T arr[], int len, int (*cmp)(T a, T b)=numcmp) { int sortiert = 0; // flag fuer alles sortiert j/n while (!sortiert) { sortiert = 1; for (int i=1; i< len; i++) { if (cmp(arr[i-1], arr[i])>0) { swap(arr[i-1], arr[i]); sortiert = 0; } } --len; } }