版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}