#include <stdio.h>
typedef int(*sort_func)(int, int);
void bubble_sort(int arr[], int len,sort_func test)
{
int temp;
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < (len - i) - 1; j++)
{
if (test(arr[j], arr[j+1]))
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int case1(int n1, int n2)
{
if (n1 > n2)
return 1;
else
return 0;
}
int case2(int n1, int n2)
{
if (n1 < n2)
return 1;
else
return 0;
}
int main()
{
int arr1[10] = { 3,5,1,2,5,8,3,2,5,7 };
bubble_sort(arr1, sizeof(arr1) / sizeof(int),case1);
for (int i = 0; i < sizeof(arr1) / sizeof(int); i++)
{
printf("%d ", arr1[i]);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CnR5cGVkZWYgaW50KCpzb3J0X2Z1bmMpKGludCwgaW50KTsKCnZvaWQgYnViYmxlX3NvcnQoaW50IGFycltdLCBpbnQgbGVuLHNvcnRfZnVuYyB0ZXN0KQp7CglpbnQgdGVtcDsKCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuLTE7IGkrKykKCXsKCQlmb3IgKGludCBqID0gMDsgaiA8IChsZW4gLSBpKSAtIDE7IGorKykKCQl7CgkJCWlmICh0ZXN0KGFycltqXSwgYXJyW2orMV0pKQoJCQl7CgkJCQl0ZW1wID0gYXJyW2pdOwoJCQkJYXJyW2pdID0gYXJyW2ogKyAxXTsKCQkJCWFycltqICsgMV0gPSB0ZW1wOwoJCQl9CgkJfQoJfQp9CgppbnQgY2FzZTEoaW50IG4xLCBpbnQgbjIpCnsKCWlmIChuMSA+IG4yKQoJCXJldHVybiAxOwoJZWxzZQoJCXJldHVybiAwOwp9CmludCBjYXNlMihpbnQgbjEsIGludCBuMikKewoJaWYgKG4xIDwgbjIpCgkJcmV0dXJuIDE7CgllbHNlCgkJcmV0dXJuIDA7Cn0KCgppbnQgbWFpbigpCnsKCWludCBhcnIxWzEwXSA9IHsgMyw1LDEsMiw1LDgsMywyLDUsNyB9OwoJYnViYmxlX3NvcnQoYXJyMSwgc2l6ZW9mKGFycjEpIC8gc2l6ZW9mKGludCksY2FzZTEpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoYXJyMSkgLyBzaXplb2YoaW50KTsgaSsrKQoJewoJCXByaW50ZigiJWQgIiwgYXJyMVtpXSk7Cgl9CgoJcmV0dXJuIDA7Cn0=