Advertisement
theelitenoob

Function Pointer BSort

Oct 8th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.96 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. // Function prototypes.
  4. int comparsion(int a, int b); // Comparsion function
  5. void change(int *a, int *b); // Swapping function
  6. void bsort(int (*cmpr)(int, int), void (*swap)(int*, int*), int* array, int asize); // Generic bubble sort
  7.  
  8. int main(int argc, char *argv[]){
  9.     int array[] = {15, 9, 4, 6, 11, 1};
  10.     bsort(comparsion, change, array, 6);
  11.     printf("%d, %d, %d, %d, %d, %d\n", array[0], array[1], array[2], array[3], array[4], array[5]);
  12.     return 0;
  13. }
  14.  
  15. void bsort(int (*cmpr)(int, int), void (*swap)(int*, int*), int* array, int asize){
  16.     int swapped; // 1 is true, 0 is false...
  17.     do{
  18.         swapped = 0;
  19.         int i;
  20.         for(i = 1; i < asize; i++){
  21.             if((*cmpr)(array[i-1], array[i])){
  22.                 (*swap)(&array[i-1], &array[i]);
  23.                 swapped = 1;
  24.             }
  25.         }
  26.     }while(swapped == 1);
  27. }
  28.  
  29. int comparsion(int a, int b){
  30.     // a = i-1 and b = i
  31.     if(a > b){
  32.         return 1;
  33.     }
  34.     return 0;
  35. }
  36.  
  37. void change(int *a, int *b){
  38.     int temp = *b;
  39.     *b = *a;
  40.     *a = temp;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement