#include <stdio.h>
#include <stdlib.h>
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
void add_items(int arr1[], int i, int* mergedArray_size, int** mergedSet) {
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;
}
}
int* merge(int arr1[], int arr1_size, int arr2[], int arr2_size, int* mergedArray_size) {
int* mergedSet = calloc(1, sizeof(int));
for (int i = 0; i < arr1_size; i++) {
add_items(arr1, i, mergedArray_size, &mergedSet);
}
for (int i = 0; i < arr2_size; i++) {
add_items(arr2, i, mergedArray_size, &mergedSet);
}
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,
*/