#include <stdio.h>#include<time.h>#include<stdlib.h>voidShow_arry (intA[],intN) { inti; for(i =0; I < n; i++) printf ("%d\n", A[i]); Putchar ('\ n');}voidInit_arry (intA[],intN) { inti; Srand (Time (NULL)); for(i =0; I < n; i++) A[i]= rand ()% -;}intCmp_int (void*a,void*b) { intx = * ((int*) a); inty = * (int*) b); returnX >y;}voidSwap_int (void*a,void*b) { inttmp; TMP= *((int*) a); *((int*) a) = * ((int*) b); *((int*) b) =tmp;}voidBubble_sort (void*a,intNint(*CMP) (void*,void*),void(*swap) (void*,void*)){ intI, J; for(i =0; I < n; i++) for(j =0; J < n-i-1; J + +) if(CMP (void*)((int*) a+j), (void*)((int*) a+j+1)) >0) Swap ((void*)((int*) a+j), (void*)((int*) a+j+1));}/*int main (void) {int a[10]; Init_arry (A, 10); Show_arry (A, 10); Bubble_sort (A, ten, Cmp_int, Swap_int); Show_arry (A, ten);}*/intCmp_float (void*a,void*b) { return*((float*) a) > * ((float*) b);}voidSwap_float (void*a,void*b) { floattmp; TMP= *((float*) a); *((float*) a) = * ((float*) b); *((float*) b) =tmp;}voidShow_float (floatA[],intN) { inti; for(i =0; I < n; i++) printf ("%f\n", A[i]); Putchar ('\ n');}intMainvoid){ floata[5] = {1.3,4.5,2.3,1.2,3.7}; Bubble_sort (A,5, Cmp_float, swap_float); Show_float (A,5);}
C-base-generic function