Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int merge_two_ordered_arrays(unsigned size1, void const *arr1,
- unsigned size2, void const *arr2,
- unsigned size_result, void *result,
- size_t sizeof_element,
- int compare(const void *elem1, const void *elem2))
- {
- unsigned ind1 = 0, ind2 = 0;
- void *curr_pos = result;
- while(ind1 < size1 && ind2 < size2 && ind1 + ind2 < size_result)
- {
- if(compare((char*)(arr1) + ind1*sizeof_element, (char*)(arr2) + ind2*sizeof_element) <= 0)
- {
- memcpy(curr_pos, (char*)(arr1) + ind1*sizeof_element, sizeof_element);
- ++ind1;
- }
- else
- {
- memcpy(curr_pos, (char*)(arr2) + ind2*sizeof_element, sizeof_element);
- ++ind2;
- }
- curr_pos = (char*)curr_pos + sizeof_element;
- }
- if(ind1 + ind2 < size_result)
- {
- if(ind1 < size1)
- memcpy(curr_pos, (char*)(arr1) + ind1*sizeof_element, (size_result - size2 - ind1)*sizeof_element);
- if(ind2 < size2)
- memcpy(curr_pos, (char*)(arr2) + ind2*sizeof_element, (size_result - size1 - ind2)*sizeof_element);
- }
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement