【算法】——排序:合併有序數組

題目表述:給定兩個排序後的數組A和數組B,其中A的末端有足夠的緩衝空間容納B。編寫一個方法,將B合併入A並排序數組

#include<stdio.h>
void combine(int *a,int *b);
int len(int *a);
int main()
{
    int a[100]={1,4,9,11,13};
    int b[4]={3,7,20};
    int n=len(a)+len(b);
    int i;
    combine(a,b);
    for(i=0; i<n; i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
 } 
 void combine(int *a,int *b)
 {
     int current=len(a)+len(b)-1;//記錄合併和數組的最後一個下標
    int p1=len(a)-1;
    int p2=len(b)-1;
    while(current!=0)
    {
        if(a[p1]>b[p2])
        {
            a[current]=a[p1];
            p1--;
        }
        else
        {
            a[current]=b[p2];
            p2--;
        }
        current--;
     } 
 }
 
 int len(int *a)
 {
     int i=0;
     while(a[i]!='\0')
     {
         i++;
     }
     return i;
 }

相關文章
相關標籤/搜索