编辑代码

#include "stdio.h"

#define COMP(a,b) (((a) <= (b)) ? (a) : (b))
//#define COMP(a,b)  a

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) {
    	  /* printf("k=%d  i = %d, j= %d, arr1[%d]=%d, arr2[%d]=%d \n",
                k, i, j, i,arr1[i], j , arr2[j]);*/
        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--;
                }
            }
        	 //printf("arrout[%d]=%d \n", k, arrout[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 res : [ 1, 2, 3, 4, 5, 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;
}