Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn Phí
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn PhíĐăng Nhập

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


descriptionThuật toán Merge Sort EmptyThuật toán Merge Sort

more_horiz
Mô tả bài toán: cho 2 danh sách A và B lần lượt có m và n phần tử đã sắp xếp theo thứ tự. Bài toán đặt ra trộn 2 danh sách A và B với nhau thành danh sách C cũng là một danh sách có thứ tự.
Thuật toán:
    Bước 1: khởi tạo ba chỉ số chạy trong vòng lặp i = 0, j = 0, k = 0 tương ứng cho ba mảng A, B và C.
    Bước 2: tại mỗi bước nếu cả hai chỉ số (iBước 3: tăng giá trị k lên 1 và quay về Bước 2.
    Bước 4: sao chép tất cả các giá trị còn lại từ các danh sách mà chỉ số còn vi phạm (tức i

    Code:

    #include <iostream.h>
    #include <conio.h>
    #define max 100
    void NhapMang(int A[],int n) {
       for(int i=0; i<n; i++) {
          cout<<"Phan tu "<<i<<" = ";
          cin>>A[i];
       }
    }
    void XuatMang(int A[],int n) {
       cout<<endl;
       for(int i=0; i<n; i++)
          cout<<A[i]<<"\t";
    }
    void MergeSort(int m, int n, int &k, int A[], int B[], int C[]) {
          int i = 0, j = 0;
          k = 0;
          while (i < m && j < n) {
                if (A[i] <= B[j]) {
                      C[k] = A[i];
                      i++;
                } else {
                      C[k] = B[j];
                      j++;
                }
                k++;
          }
          if (i < m) {
                for (int p = i; p < m; p++) {
                      C[k] = A[p];
                      k++;
                }
          } else {
                for (int p = j; p < n; p++) {
                      C[k] = B[p];
                      k++;
                }
          }
    }
    void main() {
       int A[max],B[max],C[max],n,m,k;
       clrscr();
       cout<<"n = ";
       cin>>n;
       cout<<"m = ";
       cin>>m;
       cout<<"Nhap danh sach co thu tu A:\n";
       NhapMang(A,m);
       cout<<"Nhap danh sach co thu tu B:\n";
       NhapMang(B,n);
       cout<<"\nSap xep tron 2 mang A, B\n";
       MergeSort(m,n,k,A,B,C);
       XuatMang(C,k);
       getch();
    }

descriptionThuật toán Merge Sort EmptyRe: Thuật toán Merge Sort

more_horiz
Nếu khi trộn 2 mảng này với nhau ta được mảng thứ 3 và em muốn mảng thứ 3 này random thì phải làm sao vậy thầy ?

descriptionThuật toán Merge Sort EmptyRe: Thuật toán Merge Sort

more_horiz
nvlong đã viết:
Nếu khi trộn 2 mảng này với nhau ta được mảng thứ 3 và em muốn mảng thứ 3 này random thì phải làm sao vậy thầy ?


Bạn có thể nói rõ hơn ý của mình không?

descriptionThuật toán Merge Sort EmptyRe: Thuật toán Merge Sort

more_horiz
Sorry , E không đọc kỹ đề



Bài toán đặt ra trộn 2 danh sách A và B với nhau thành danh sách C cũng là một danh sách có thứ tự.


Và e không hiểu cho lắm về thuật toán này .



Bước 1: khởi tạo ba chỉ số chạy trong vòng lặp i = 0, j = 0, k = 0 tương ứng cho ba mảng A, B và C.
Bước 2: tại mỗi bước nếu cả hai chỉ số (i
Bước 3: tăng giá trị k lên 1 và quay về Bước 2.
Bước 4: sao chép tất cả các giá trị còn lại từ các danh sách mà chỉ số còn vi phạm (tức i


Thầy có thể chạy tay từng bước được không ạ . E thực sự không hiểu lắm .

Thank 4 share .

descriptionThuật toán Merge Sort EmptyRe: Thuật toán Merge Sort

more_horiz
Em phai tu debug thi moi hieu duoc!

descriptionThuật toán Merge Sort EmptyRe: Thuật toán Merge Sort

more_horiz
privacy_tip Permissions in this forum:
Bạn không có quyền trả lời bài viết
power_settings_newLogin to reply