【C練習】兩個已經從小到大的數組合併成爲一個從小到大排序的數組

兩個已經從小到大的數組合併成爲一個從小到大排序的數組數組

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int m,n,i,j,k,tem=0;
 5     printf("這兩個數組分別有多少個數:\n");
 6     scanf("%d%d",&m,&n);
 7     int a[m],b[n],c[m+n];
 8     printf("從小到大輸入%d個數:\n",m);
 9     for(i=0;i<m;i++)
10         scanf("%d",&a[i]);
11     printf("從小到大輸入%d個數:\n",n);
12     for(i=0;i<n;i++)
13         scanf("%d",&b[i]);
14     i=0;j=0;k=0;
15     do
16     {
17         if(a[i]==b[j])
18         {
19             c[k]=a[i];
20             k++;
21             c[k]=b[j];
22             k++;i++;j++;
23         }
24         else if (a[i]>b[j])
25         {
26             c[k]=b[j];
27             j++;k++;
28         }
29         else
30         {
31             c[k]=a[i];
32             i++;
33             k++;
34         }
35     }
36     while((i!=m)&&(j!=n));
37     if(i==m)
38         for(;j<n;j++,k++)
39             c[k]=b[j];
40     if(j==n)
41         for(;i<m;i++,k++)
42             c[k]=a[i];
43     printf("結果是:\n");
44     for (;tem<m+n;tem++)
45         printf("%d ",c[tem]);
46     printf("\n");
47     return 0;
48 }
49 測試運行:
50 xuxiang@xuxiang-X556UQ:~/桌面$ ./2
51 這兩個數組分別有多少個數:
52 6 4
53 從小到大輸入6個數:
54 6 9 11 13 13 13    
55 從小到大輸入4個數:
56 1 13 13 19
57 結果是:
58 1 6 9 11 13 13 13 13 13 19 
59 xuxiang@xuxiang-X556UQ:~/桌面$ 
相關文章
相關標籤/搜索