【算法】——排序:合并有序数组

题目表述:给定两个排序后的数组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;
 }

猜你喜欢

转载自www.cnblogs.com/jessie99/p/12358172.html