38 lines
666 B
C
38 lines
666 B
C
|
#include <stdlib.h>
|
||
|
#include "merging.h"
|
||
|
//#include <stdio.h>
|
||
|
|
||
|
int* merging(int* nums1, int* nums2, int size1, int size2) {
|
||
|
int* mergedStart = malloc((size1 + size2) * sizeof(*nums1));
|
||
|
int* merged = mergedStart;
|
||
|
|
||
|
int i = 0;
|
||
|
int j = 0;
|
||
|
|
||
|
while (i + j < size1 + size2) {
|
||
|
//printf("%d %d : %d %d\n", *nums1, *nums2, i, j);
|
||
|
if (i < size1 && j < size2) {
|
||
|
if (*nums1 < *nums2) {
|
||
|
*merged = *nums1;
|
||
|
nums1++;
|
||
|
i++;
|
||
|
} else {
|
||
|
*merged = *nums2;
|
||
|
nums2++;
|
||
|
j++;
|
||
|
}
|
||
|
} else if (i >= size1 && j < size2) {
|
||
|
*merged = *nums2;
|
||
|
nums2++;
|
||
|
j++;
|
||
|
} else {
|
||
|
*merged = *nums1;
|
||
|
nums1++;
|
||
|
i++;
|
||
|
}
|
||
|
merged++;
|
||
|
}
|
||
|
|
||
|
return mergedStart;
|
||
|
}
|