PDA

View Full Version : Trộn 2 mảng với nhau



tdhung2106
24-11-2010, 12:12 PM
Mảng A tăng, mảng B giảm, trộn A và B thành mảng C tăng:

// Truong Dinh Hung DCT1091 MSV 3109410073
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
/////////////////////////////////////////////////
void Enter(int *a,int n);
void Print(int *a,int n);
void Merge(int *c,int *a,int na,int *b,int nb);
/////////////////////////////////////////////////
void main()
{
int a[100], b[100];
int c[200];
int na,nb,nc;
cout<<"Enter the length of array a: ";
cin>>na;
Enter(a,na);
cout<<"Enter the length of array b: ";
cin>>nb;
Enter(b,nb);
nc=na+nb;
Merge(c,a,na,b,nb);
cout<<"Array after Merge: ";
Print(c,nc);
}
void Enter(int *a,int n)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
}
void Print(int *a,int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void Merge(int *c,int *a,int na,int *b,int nb)
{
int ic,ib,ia;
ic=0;
ib=nb-1;
ia=0;
while(ia<na && ib>0)
{
if(a[ia]<b[ib])
c[ic++]=a[ia++];
else
c[ic++]=b[ib--];
}
while(ia!=na)
c[ic++]=a[ia++];
while(ib>=0)
c[ic++]=b[ib--];
}

integer
24-11-2010, 07:03 PM
khá hay, nhưng chú ý b[ib--] khi ib==0 sẽ có giá trị -1.


while(ib>=0)
c[ic++]=b[ib--];