#include <iostream>
using namespace std;
#define max 100000
int l[] = {17,25,28,39,72};
int llength = 5;
int r[] = {4,15,23,55,89};
int rlength = 5;
int re[10];
void merge(int * l,int * r,int llength,int rlength)
{
int i=0,j=0,k;
int L[llength];int R[rlength];
for( i = 0;i < llength;i++)
L[i] = l[i];
L[i] = max;
for( i = 0;i < llength;i++)
R[i] = r[i];
R[i] = max;
i = 0;j = 0;
for( k = 0;k < llength+rlength-2;k++)
if(L[i] <= R[j])
{
re[k] = L[i];
i++;
}
else
{
re[k] = R[j];
j++;
}
}
int main()
{
merge(l,r,llength,rlength);
for(int i = 0;i < llength+rlength-2;i++)
cout<<re[i]<<" ";
cout<<endl;
return 0;
}
在两个已排好序的数组最后分别加上一个无穷的数,这样可以在合并时省去了判断两个字数组中是否有一个已经结束。
合并排序
最新推荐文章于 2022-11-27 14:28:13 发布