B23. 分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。 要

B23.分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。要求:(1)数组a和b的大小用动态分配内存方式确定(2)至少调用一次子函数... B23. 分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。 要求:(1)数组a和b的大小用动态分配内存方式确定 (2)至少调用一次子函数 展开
 我来答
百度网友fb4c2f3
2014-06-19 · TA获得超过435个赞
知道小有建树答主
回答量:193
采纳率:0%
帮助的人:175万
展开全部

这是我写的代码:

#include<iostream>
using namespace std;

//获取输入的函数 
bool GetValue( int len, int *array )
{
     cout << "请输入" << len << "个数:" ;
     
     for( int i=0; i<len; i++ )
     {
          cin >>  array[i];
     }
     
     sort( array, array+len ); //进行排序 
     
     return true;
}

//用于合并两个数组的函数 
void Merge( int *a, int *b, int *c, int len_a, int len_b )
{
     int index_a, index_b, index_c;
     
     for( index_a = 0, index_b = 0, index_c = 0 ; index_a <len_a && index_b < len_b; index_c++ ) //下标不可越界
     {
          if( a[index_a] < b[index_b] )  //a数组中的元素比b数组中的小
          {
               c[index_c] = a[index_a];  //归并到c数组中
               index_a++; //a数组元素下标移动 
          }
          else
          {
              //b数组的元素比a数组元素小 
              c[index_c] = b[index_b];    
              index_b++;  //b数组元素下标移动 
          }
     }
     
     while( index_a < len_a )  //a数组仍有元素未能比较 
     {
            c[index_c++] = a[index_a++];
     }
     
     while( index_b < len_b ) //b数组仍有元素未能比较 
     {
            c[index_c++] = b[index_b++];
     }
}

int main()
{
    int len_a, len_b;
    int *Array_a = NULL;
    int *Array_b = NULL;
    int *Array_c = NULL;
    
    
    cout << "请输入第一个数组的长度:";
    cin >> len_a;
    Array_a = new int[ len_a ];
    GetValue( len_a, Array_a ); 
    
    cout << "请输入第二个数组的长度:";
    cin >> len_b;
    Array_b = new int[ len_b ];
    GetValue( len_b, Array_b );
    
    Array_c = new int[ len_a + len_b ]; //创建第三个数组 
    
    Merge( Array_a, Array_b, Array_c, len_a, len_b );//进行归并并排序 
    
    //输出排序后的结果
    for( int i=0; i< len_a + len_b ; i++ )
    {
           cout << Array_c[i] << ' ';
    }
    cout << endl;
    
    Array_a = null;
    Array_b = null;
    Array_c = null;
    system("pause");
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式