#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int* merge(int arr1[], int arr1_size, int arr2[], int arr2_size, int* mergedArray_size) {
int* mergedSet = calloc(0, sizeof(int));
for (int i = 0; i < arr1_size; i++) {
int num = arr1[i];
int found = 0;
for (int j = 0; j < *mergedArray_size; j++) {
if (mergedSet[j] == num) {
found = 1;
break;
}
}
if (!found) {
mergedSet = realloc(mergedSet, (*mergedArray_size + 1) * sizeof(int));
mergedSet[(*mergedArray_size)++] = num;
}
}
for (int i = 0; i < arr2_size; i++) {
int num = arr2[i];
int found = 0;
for (int j = 0; j < *mergedArray_size; j++) {
if (mergedSet[j] == num) {
found = 1;
break;
}
}
if (!found) {
mergedSet = realloc(mergedSet, (*mergedArray_size + 1) * sizeof(int));
mergedSet[(*mergedArray_size)++] = num;
}
}
return mergedSet;
}
int main() {
int arr1[] = { 1, 2, 2, 3, 7, 7, 7, 8, 9 };
int arr1_size = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = { 0, 0, 4, 4, 4, 5, 6, 7, 7, 8 };
int arr2_size = sizeof(arr2) / sizeof(arr2[0]);
int mergedArray_size = 0;
int* mergedArray = merge(arr1, arr1_size, arr2, arr2_size, &mergedArray_size);
qsort(mergedArray, mergedArray_size, sizeof(int), compare);
for (int i = 0; i < mergedArray_size; i++) {
printf("%d, ", mergedArray[i]);
}
free(mergedArray);
return 0;
}
/*
run:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
*/