algorithm - Writing generic mergeSort in C, can't assign value to void* -


i trying code "generic" mergesort in c:

void mergesort(void *arr, int begin, int end,int size,     int (*comp)(void *, void *)); 

but since need holder/temp array, becomes bit tricky. not sure how assign values array, since created void * array:

int mid = (begin + end) / 2; int len = end - begin + 1; void *pom = malloc(len*size); 

but can't assign values array, there way around it?

i = begin, j = mid + 1, k = 0; while (i <= mid && j <= end)     **pom[k++]** = ((*comp)((char*)arr + i*size, (char *)arr + j*size) <= 0) ? arr[i] : arr[j]; while (i <= mid)     **pom[k++]** = arr[i++]; while (j <= end)     **pom[k++]** = arr[j++]; 

the bold lines give off error.

yes, need copy size bytes.

so **pom[k++]** = arr[i++]; becomes memcpy(pom + size*(k++), arr+size*(i++), size); , similar others.


Comments