【C/C++】将二个有序数组合并

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lyq_12/article/details/85051799

1、同时循环取2个数组中的数,比较2个数组的第1个数,谁小把谁放入新数组;

2、再把数字小的数组往后继续取数字;

3、如果有数组遍历完,就把另一个数组的剩余数据全部赋给新数组即可。

代码如下:

#include <iostream>
using namespace std;


void mergeSort(int *a, int m, int *b, int n, int *c)
{
	int i,j,k;
	i=0; 
	j=0;
	k = 0;
	while (i<m && j<n)
	{
		if (a[i]<b[j])
		{
			c[k++] = a[i++];
		}
		else 
		{
			c[k++] = b[j++];
		}
	}
	while(i<m)
	{
		c[k++] = a[i++];
	}
	while(j<n)
	{
		c[k++] = b[j++];
	}
}
int main()
{
	int a[6] = {1,4,7,8,9,15};
	int b[7] = {0,2,3,6,10,11,17};
	int c[13];
	mergeSort(a, 6, b, 7, c);

	for(int num = 0; num<13; num++)
	{
		cout<<c[num]<<",";
	}
	cout<<endl;

	cin.get();
	return 0;
}

猜你喜欢

转载自blog.csdn.net/lyq_12/article/details/85051799
今日推荐