Likou: 88. Combine two ordered arrays

Insert picture description here
Idea: Use the double pointer method
Insert picture description here

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
    
    
    int *arr=(int *)malloc(sizeof(int)*(m+n));
    int i=0;
    int j=0;
    int k=0;
    while(i<m&&j<n)
    {
    
    
        if(nums1[i]<nums2[j])
        {
    
    
            arr[k]=nums1[i];
            i++;
        }
        else
        {
    
    
            arr[k]=nums2[j];
            j++;
        }
        k++;
    }
    while(i<m)
    {
    
    
        arr[k]=nums1[i];
        i++;
        k++;
    }
    while(j<n)
    {
    
    
        arr[k]=nums2[j];
        j++;
        k++;
    }
    for(i=0;i<k;i++)
    {
    
    
        nums1[i]=arr[i];
    }
    for(i=0;i<n;i++)
    {
    
    
        printf("%d ",nums1[i]);
    }
}

Guess you like

Origin blog.csdn.net/qq_46527915/article/details/115033766