#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
int arrayA[10] = {1, 3, 5, 7, 9};
int arrayB[] = {2, 4, 6, 8, 10};
const int sizeB = sizeof arrayB / sizeof *arrayB;
const int sizeA = sizeof arrayA / sizeof *arrayA - sizeB;
int* mergeArray(int *arrayA, int sizeA, int *arrayB, int sizeB)
{
if (arrayA == NULL || arrayB == NULL || sizeA < 0 || sizeB < 0)
return NULL;
int posA = sizeA - 1;
int posB = sizeB - 1;
while (posA >= 0 && posB >= 0)
{
if (arrayA[posA] < arrayB[posB])
{
arrayA[posA + posB + 1] = arrayB[posB];
posB--;
}
else
{
arrayA[posA + posB + 1] = arrayA[posA];
posA--;
}
copy(arrayA, arrayA + 10, ostream_iterator<int>(cout, " "));
system("pause");
}
return arrayA;
}
void main()
{
int *result = mergeArray(arrayA, sizeA, arrayB, sizeB);
copy(result, result + 10, ostream_iterator<int>(cout, " "));
cout << endl;
}
int* mergeArray(int *arrayA, int sizeA, int *arrayB, int sizeB)
{
if (arrayA == NULL || arrayB == NULL || sizeA < 0 || sizeB < 0)
return NULL;
int posA = sizeA - 1;
int posB = sizeB - 1;
while (posA >= 0 && posB >= 0)
{
if (arrayA[posA] < arrayB[posB])
{
arrayA[posA + posB + 1] = arrayB[posB];
posB--;
}
else
{
arrayA[posA + posB + 1] = arrayA[posA];
posA--;
}
copy(arrayA, arrayA + size, ostream_iterator<int>(cout, " "));
system("pause");
}
//出现两种情形:
//1. posA < 0 && posB >= 0
//2. posA >= 0 && posB < 0
//只有第1种情形需要进行处理
if (posA < 0 && posB >= 0)
{
while (posB >= 0)
{
arrayA[posA + posB + 1] = arrayB[posB];
posB--;
}
}
return arrayA;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有