Trộn 2 mảng với nhau

Thảo luận trong 'C/C++' bắt đầu bởi tdhung2106, 24 Tháng mười một 2010.

  1. Offline

    tdhung2106

    • Thành Viên Mới

    Số bài viết:
    34
    Đã được thích:
    15
    Điểm thành tích:
    0
    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);
    }
    void Print(int *a,int n)
    {
    for(int i=0;i<n;i++)
    cout<<a<<" ";
    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--];
    }
    zphuoocmpedautay thích bài này.
  2. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    khá hay, nhưng chú ý b[ib--] khi ib==0 sẽ có giá trị -1.
    Mã:
        while(ib>=0)
            c[ic++]=b[ib--];
    

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí