C++算法之 合并两个数组

1:合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素;

 

因为题目当中已经有一个数组可以容的下两个数组的元素,所有不需要请求新的数组,但是要把比较后的数组从后面往前面放;

比如有数组A实际5个元素,数组B实际5个元素,那么我们  让a[4]与b[4]比较,把大的那一个放到a[9];比如a[4]>b[4];那么把a[4]放到

a[9];再让a[3]与b[4]比较,此时如果b[4]大,那么把b[4]放到a[8];再用b[3]与a[3]比较;依次类推,当A数组已经都遍历完,但是B数组

还没有遍历完,说明剩余的B数组比A数组最小的还小,把剩余的B数组按序放到A数组即可:

C++算法之 合并两个数组_第1张图片

 

 

下面附上代码:

// MergeArray.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
using namespace std;

void MergeArray(int a[], int aCount, int b[], int blen)//aCount为a数组实际(狭义)长度,blen为b数组实际长度
{
	int len = aCount + blen - 1;//合并数组的长度也就是a数组的广义长度
	aCount--;
	blen--;
	while (aCount>=0 && blen>=0)
	{
		if (a[aCount] >= b[blen])
		{
			a[len--] = a[aCount--];
		}
		else
		{
			a[len--] = b[blen--];
		}
	}
	while(blen >= 0)
	{
		a[len--] = b[blen--];
	}

}

int _tmain(int argc, _TCHAR* argv[])
{
	int a[] = {2,4,6,8,10,0,0,0,0,0};
	int b[] = {1,3,5,7,9};

	MergeArray(a,5,b,5);
	for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
	{
		cout<


 

你可能感兴趣的:(c/c++,C++笔试题)