c语言解决合并两个有序数组-剑指offer

一,思维导图

 

 二,具体代码

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
    int nu1=m-1;
    int nu2=n-1;
    while(nu2>=0&&nu1>=0)
    {
        if(nu1>nu2)  //考虑m>n的情况 
        {
            nums1[nu1+nu2+1]=nums2[nu2];
            nu2--;
        }
        else  //考虑m=n 
        {
            nums1[nu1+nu2+1]=nums1[nu1];
            nu1--;
        }
    }
    while(nu2>=0)//考虑m为空,n>0 
    {
        nums1[nu1+nu2+1]=nums2[nu2];
        nu2--;
    }
    for(int a=0;a<m+n-1;a++)
    {
        for(int b=0;b<m+n-a-1;b++)
        {
            if(nums1[b]>nums1[b+1])
            {
                int temp=0;
                temp=nums1[b];
                nums1[b]=nums1[b+1];
                nums1[b+1]=temp;
            }
        }
    }
}

 

posted @ 2022-01-08 11:07  小杜加油  阅读(386)  评论(0)    收藏  举报