#include "stdio.h"
#define COMP(a,b) (((a) <= (b)) ? (a) : (b))
void array(int *arr1, int size1, int *arr2, int size2, int *arrout, int *sizeout)
{
int i = 0;
int j = 0;
int k = 0;
while(i<size1 && j < size2) {
if(arr1[i]<= arr2[j])
{
arrout[k] = arr1[i];
if(arr1[i] == arr2[j])
{
if( j < size2)
{
j++;
}
}
if( i < size1)
{
i++;
}
}
else {
arrout[k] = arr2[j];
if(j<size2)
{j++;}
}
if(k>=1){
if(arrout[k] == arrout[k-1]){
k--;
}
}
k++;
if(i == size1 || j == size2)
{
break;
}
}
if(i < size1)
{
for(; i< size1; i++)
{
arrout[k] = arr1[i];
printf("arrout[%d]=%d \n", k, arrout[k]);
k++;
if(k>=1){
if(arrout[k] == arrout[k-1]){
k=k-1;
}
}
}
}
if(j < size2)
{
for(; j< size2; j++)
{
arrout[k] = arr2[j];
if(k>=1){
if(arrout[k] == arrout[k-1]){
k=k-1;
}
}
k++;
}
}
*sizeout = k;
return;
}
int main()
{
int arr1[] = {1, 1, 1, 2, 3, 5,5,5 ,6,6,300} ;
int arr2[] = {2, 4, 4, 4, 5, 7,7,7,7,7, 150 } ;
int size1 = sizeof(arr1)/sizeof(arr1[0]);
int size2 = sizeof(arr2)/sizeof(arr2[0]);
int size3 = size1 + size2;
int arrout[10]= {0};
int sizeout = 0;
printf("size1=%d, size2=%d, size3=%d \n", size1, size2, size3);
array(arr1, size1, arr2, size2, arrout, &sizeout);
printf("sizeout = %d \n", sizeout);
for(int i = 0; i< sizeout; i++)
{
printf(" %d ", arrout[i]);
}
printf("\n");
return 0;
}