merges.cpp

来自「非常全的排序算法c实现」· C++ 代码 · 共 57 行

CPP
57
字号
/*归并--合并两个有序的序列*/
#include<iostream.h>//归并排序
#define MAXA  3
#define MAXB  4
#define MAXC  7
void merge(int A[], int Alen, int B[], int Blen, int C[]);
int main()
{
   int i,*pa,*pb,*pc,n1,n2,n3,a[MAXA],b[MAXB],c[MAXC];
   n1=MAXA;
   n2=MAXB;
   n3=MAXC;

   pa=a;
   pb=b;
   pc=c;

   cout<<"Input "<<n1<<" number for sorting(A) :"<<endl;
   for(i=0;i<MAXA;i++)
   {
	  cin>>a[i];
   }
   cout<<endl;
   cout<<"Input "<<n2<<" number for sorting(B) :"<<endl;
   for(i=0;i<MAXB;i++)
   {
	  cin>>b[i];
   }
   cout<<endl;

   merge(a,n1,b,n2,c);

   cout<<"After insert_sort:"<<endl;
   for(i=0;i<MAXC;i++)
   {
     cout<<c[i]<<" ";
   }
   cout<<endl;
   return 0;
}

void merge(int A[], int Alen, int B[], int Blen, int C[])//归并排序
{
   int i=0,j=0,k=0;
   while(i<Alen&&j<Blen)//a,b数组都不为空
   {
       if(A[i]<B[j])
	     C[k++]=A[i++]; 
	   else
	     C[k++]=B[j++];
   }
   while(i<Alen)//如果b为空,a的后一部分直接给c
	  C[k++]=A[i++];
   while(j<Blen)
	  C[k++]=B[j++];
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?