输入两个不定长数组并将其排序后,再次将两个数组合并并排序

img

img

img


为什么最后打印出的合并数组是0

tail在前面的运算中已经--了


#include <stdio.h>
void Sort(int t[], int n)
{
    int i;
    for ( i = 0; i < n - 1; ++i)
    {
        int end = i;
        int tem = t[end + 1];
        while (end >= 0)
        {
            if (tem < t[end])
            {
                t[end + 1] = t[end];
                end--;
            }
            else
            {
                break;
            }    
        }
        t[end+1] = tem;
    }
}
void Printarr(int t[],int n)
{
    int j=0;
    while(j<n)
    {
        printf("%d  ",t[j]);
        j++;
    }
    printf("\n");
}
int main()
{
        int j=0;
        int n1,n2;
        printf("请输入数组p1[]大小:");
        scanf("%d",&n1);
        int p1[n1];
        while(j<n1)
        {
            scanf("%d",&p1[j]);
            j++;
        }
        Sort(p1,n1); 
        printf("排序后");Printarr(p1,n1);
        
        
        printf("请输入数组p2[]大小:");
        scanf("%d",&n2);
        int p2[n2];
        j=0;
        while(j<n2)
        {
            scanf("%d",&p2[j]);
            j++;
        }
        Sort(p2,n2);
        printf("排序后");Printarr(p2,n2);
        
        int n3=n1+n2;
        int p3[n3];
        
        j=0;

        while(j<n1)
        {
            p3[j]=p1[j];
            j++;
        }
        while(j<n3)
        {
            p3[j]=p2[j-n1];
            j++;
        }
        
        printf("合并后");Printarr(p3,n3);
        Sort(p3,n3);
        printf("排序后");Printarr(p3,n3);

        return 0;    
}

img