#include <stdio.h>
enum {FALSE, TRUE};
void bubbleSort(int arr[], int(*order)(int, int), int max);
int desc(int , int);
int asc(int , int);
void swap( int*, int* );
int main()
{
int i, a[5] = {20, 10, 5, 1, 3};
bubbleSort(a, asc, 5);
for (i = 0; i < 5; i++)
{
printf("%d\n", a[i]);
}
}
void bubbleSort(int arr[], int(*order)(int, int), int max)
{
int swaped = FALSE, i;
do{
for(i = 0; i < max-1; i++)
{
if( order(arr[i], arr[i+1]) )
{
swap(&arr[i], &arr[i+1]);
}
}
max -= 1;
}while(!swaped);
}
int desc(int a, int b)
{
if(a > b)
{
return 1;
}
return 0;
}
int asc(int a, int b)
{
if( a > b )
{
return 0;
}
return 1;
}
void swap( int *a, int *b )
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
Kude gresha?