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