/********************************
* Author: theteachr
********************************/
#include <stdio.h>
/* helpers */
static void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
void print_arr(int* arr, int size) {
printf("{ ");
for (int i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("}\n");
}
/* sort function with comparator */
void bubble_sort(int* arr, int size, int (*cmp)(int, int)) {
for (int i = 0; i < size - 1; i++)
for (int j = 0; j < size - i - 1; j++)
if (cmp(arr[j], arr[j + 1]))
swap(arr + j, arr + j + 1);
}
/* comparators */
int is_smaller(int a, int b) {
return a < b;
}
int is_greater(int a, int b) {
return a > b;
}
int second_digit(int a, int b) {
return (a / 10) % 10 > (b / 10) % 10;
}
/* driver */
int main(void) {
int one[] = {12, 0, 5, 154, 87, 78, 124};
int size = sizeof(one) / sizeof(int);
// bubble_sort(one, size, is_smaller);
// bubble_sort(one, size, is_greater);
bubble_sort(one, size, second_digit);
print_arr(one, size);
return 0;
}