1. 程式人生 > >【C/C++】將二個有序數組合並

【C/C++】將二個有序數組合並

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;
}