void swap(void **x, void **y) { void *temp = *x; *x = *y; *y = temp; } void bubble_sort(void *vector[], int length, int (*less)(void *, void *)) { for (int max = length - 2; max >= 0; max--) for (int i = 0; i <= max; i++) if (less(vector[i + 1], vector[i])) swap (&vector[i], &vector[i + 1]); }
La fonction less passée en argument renvoie vrai si et seulement si son premier argument est strictement inférieur à son deuxième argument.
La variable max indique l'index maximum du premier élément d'un couple qui doit être considérer pour un échange.
La fonction swap permet d'échanger deux valeurs de type void *.