B23. 分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。 要
B23.分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。要求:(1)数组a和b的大小用动态分配内存方式确定(2)至少调用一次子函数...
B23. 分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。 要求:(1)数组a和b的大小用动态分配内存方式确定 (2)至少调用一次子函数
展开
展开全部
这是我写的代码:
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询