Generic quicksort in C
Recently I've learned how to use void pointers and function pointers in C and make functions generic as a part of MRND . So I've tried developing a generic quicksort function using it. I've implemented it in a header file so that it can be reused. Here's the gist for genericSort.h The four arguments being sent into the genericQSort function are: void ** arr : It's an array of pointers which holds the addresses of each element of the array that is to be sorted. int lo: The start index from where the array needs to be sorted. int hi: The end index till where the array needs to be sorted. int (*compare)( void * , void * ) : A function pointer to the user's implementation of how to compare the sent array. It returns -1, 1 or 0. Here's a C program that makes use of the above function to sort an array of pair s . Here pair is a user-defined data-type which has two members x and y . The array is sorted based on the sum of x and y. H...