使用O(n)的时间复杂度合并两个数组

来源:互联网 发布:网络传播的缺点 编辑:程序博客网 时间:2024/05/16 04:58

题目描述:
有两个排序数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2,请实现一个函数,把A2中的所有数字插入到A1中并且所有的数字是有序的。

#include<iostream>using namespace std;void Merge(int A1[],int n,int A2[],int m){    int i = n-1; int p = n+m-1;    int j = m-1;    while(p>i)    {        if(i>=0&&A1[i]>A2[j])        {            A1[p] = A1[i];            p--;            i--;        }else{            A1[p]=A2[j];            j--;            p--;        }    }}int main(){    int A1[]={11,13,15,17,19,0,0,0,0,0};    int A2[]={2,4,6,8,10};    Merge(A1,5,A2,5);    for(int i = 0; i < 10;i++)    {        cout << A1[i] <<" ";    }}
0 0