Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Thuật toán sắp xếp đếm phân phối (distribution counting)?

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    2

    Unhappy Thuật toán sắp xếp đếm phân phối (distribution counting)?

    cái thuật toán mà mình tìm thấy trên mạng mình về chạy trên mảng 1 chiều không đc
    Ai pro giúp mình với cái thuật toán này áp dụng cho C++ mình thấy không đc dù đã khai báo hết mức mình có thể

    C Code:
    1. double *distributioncounting(double *a){
    2.    int c[M+1]; /* lưu số lần xuất hiện của các phần tử mảng a */
    3.    int v;
    4.    double b[n];
    5.    for (int i = 0; i <= M; i++) c[i] = 0;
    6.    for (i = 1; i <= n; i++) c[a[i]]++; /* đếm số lần xuất hiện của a[i] trong khoảng [0..M] */
    7.    for (i = 1; i <= M; i++) c[i] += c[i-1]; /*tính vị trí cuối của mỗi đoạn con */
    8.    for (i = n; i > 0; i--) {
    9.      v = a[i];
    10.      b[c[v]] = a[i];
    11.      c[v]--;
    12.    }
    13.    return b;

    Ai pro xin chỉ giáo giúp cần phải làm gi nha

  2. #2
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    74

    sao bạn lại khai báo mảng a, b là double phải là int nhé.

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    2

    Mình đã sửa và ko chạy
    C Code:
    1. void distributioncounting(int *&a,int &n,int &m)
    2. {
    3.    int *c; /* lưu số lần xuất hiện của các phần tử mảng a */
    4.    c = new int [m];
    5.    int v;
    6.    int *b;
    7.    b = new int[n];
    8.    for (int i = 0; i <= n; i++) c[i] = 0;
    9.    for (i = 1; i <= n; i++) c[a[i]]++; /* đếm số lần xuất hiện của a[i] trong khoảng [0..M] */
    10.    for (i = 1; i <= n; i++) c[i] += c[i-1]; /*tính vị trí cuối của mỗi đoạn con */
    11.    for (i = n; i > 0; i--)
    12.    {
    13.      v = a[i];
    14.      b[c[v]] = a[i];
    15.      c[v]--;
    16.    }
    17.    delete []b;
    18.    delete []c;
    19. }
    đã chỉnh rùi chạy không có đc hic

  4. #4
    Ngày gia nhập
    11 2011
    Bài viết
    11

    cách truyền tham số của bạn sai rồi. chỉ cần truyền tham trị là ok.
    void countSort(int a[];int b[],int c[],int k){....}
    xoẹt xoẹt..chấm chấm..gạch gạch..

Các đề tài tương tự

  1. Thuật toán Distribution Counting bị sai kết quả
    Gửi bởi fabiano90 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 21-02-2013, 09:53 AM
  2. Automatic Reference Counting (ARC) trong Xcode 4.2
    Gửi bởi huygamer trong diễn đàn Thắc mắc lập trình Objective-C
    Trả lời: 10
    Bài viết cuối: 18-01-2013, 02:46 PM
  3. Trả lời: 0
    Bài viết cuối: 04-03-2012, 10:32 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn