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

Đề tài: Thuật toán RadixSort Bằng C++

  1. #1
    Ngày gia nhập
    05 2007
    Bài viết
    1

    Smile Thuật toán RadixSort Bằng C++

    Thuật toán RadixSort hơi khó. Vì nó không phải dùng danh sách liên kết, mà là trên mảng nên khó hơn. Tuy mình đã hiểu ý tưởng nhưng không biết viết giải thuật bằng C++. Mong các bạn giúp mình với !

  2. #2
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Nếu theo sách ở VN thì kiểu radix sort thường là sắp xếp dựa trên con số, mình có tìm thấy 1 kiểu sắp xếp dựa trên bit, cũng là radi sort, bạn có thể tham khảo thêm, rất hay và ngắn gọn:
    Code:
    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    using namespace std;
    void radix (int byte, long N, long *source, long *dest)
    {
      long count[256];
      long index[256];
      memset (count, 0, sizeof (count));
      for ( int i=0; i<N; i++ ) count[((source[i])>>(byte*8))&0xff]++;
    
      index[0]=0;
      for (int i=1; i<256; i++ ) index[i]=index[i-1]+count[i-1];
      for (int i=0; i<N; i++ ) dest[index[((source[i])>>(byte*8))&0xff]++] = source[i];
    }
    
    void radixsort (long *source, long *temp, long N)
    {
      radix (0, N, source, temp);
      radix (1, N, temp, source);
      radix (2, N, source, temp);
      radix (3, N, temp, source);
    }
    
    void make_random (long *data, long N)
    {
      for ( int i=0; i<N; i++ ) data[i]=rand()%32760;
    }
    
    long data[10];
    long temp[10];
    
    int main()
    {
     srand(time(0)); make_random(data, 10);
     for ( int i=0; i<10; i++ ) cout <<setw(6) << data[i];
     cout <<endl;
     radixsort (data, temp, 10);
     for ( int i=0; i<10; i++ ) cout <<setw(6) << data[i];
     getchar(); return 0;
    }

  3. #3
    Ngày gia nhập
    05 2007
    Bài viết
    1

    Cậu lại đưa bài này ra rồi huynguyen ! Bài này không đúng tí nào, mình đã thử nhiều rồi xin cậu cho bài khác bằng mảng hợp lí hơn !

  4. #4
    Ngày gia nhập
    04 2007
    Bài viết
    128

    Anh ơi hàm memset (count, 0, sizeof (count)); là j` vậy? chắc trên VC 2005 có hàm này sẵn ah?

  5. #5
    Ngày gia nhập
    05 2007
    Nơi ở
    HCMC
    Bài viết
    60

    Hàm memset dùng để điền một giá trị vào vùng nhớ cho trước. Ví dụ để điền giá trị 0 vào mảng a có n phần tử kiểu int, thay vì dùng vòng lặp for để làm lần lượt thì mình chỉ cần gọi:

    memset(&a[0], 0, n*sizeof(int))

    Hàm này có trong ANSI-C xa lơ la lắc, trong thư viện <memory.h>.

  6. #6
    Ngày gia nhập
    05 2007
    Bài viết
    1

    Mặc định Thuật toán RadixSort Bằng C++

    Cảm ơn các bạn đã xem câu hỏi của tôi. Tôi đã xem lại ý tưởng và đã giải được bài này !

  7. #7
    Ngày gia nhập
    12 2007
    Bài viết
    0

    mình cũng đang ko hiểu hàm đó. ai hiểu câu lệnh này giải thích giùm mình với
    memset(&g_pxstate,0,sizeof(g_pxstate));

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

  1. Dịch thuật, công ty dịch thuật, dịch vụ dịch thuật chuyên nghiệp
    Gửi bởi vecvn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 4
    Bài viết cuối: 18-11-2012, 10:44 PM
  2. Dịch vụ kế toán: Báo cáo thuế, dịch vụ tư vấn thuế, báo cáo thuế tncn vnnp
    Gửi bởi ecomvnnp01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 16-02-2012, 11:07 AM
  3. Sắp xếp ShellSort, RadixSort, HeapSort, Mergee
    Gửi bởi v0va_1106 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 21-10-2010, 08:42 PM
  4. Chạy tay thuật toán RadixSort
    Gửi bởi chuong01 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 21-08-2010, 10:41 AM

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