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
Post a Comment