Kết quả 1 đến 2 của 2

Chủ đề: Thuật toán radix sort

  1. #1
    Ngày tham gia
    Jun 2013
    Bài viết
    926
    Thanks
    24
    Thanked 302 Times in 220 Posts

    Thuật toán radix sort

    Đây là code của radix sort, ý tưởng của giải thuật này là sắp xếp trên từng byte. Ý tưởng của bạn về giải thuật này là gì?


    #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>

    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 ( i=1; i<256; i++ ) index[i]=index[i-1]+count[i-1];
    for ( 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()|(rand()<<16);
    }

    long data[100];
    long temp[100];

    void main (void)
    {
    make_random(data, 100);
    radixsort (data, temp, 100);
    for ( int i=0; i<100; i++ ) cout << data[i] << '\n';
    }

  2. #2
    Ngày tham gia
    May 2016
    Bài viết
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Exclamation Sữa

    Trích dẫn Gửi bởi mr.datnh Xem bài viết
    Đây là code của radix sort, ý tưởng của giải thuật này là sắp xếp trên từng byte. Ý tưởng của bạn về giải thuật này là gì?


    #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>

    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 ( i=1; i<256; i++ ) index[i]=index[i-1]+count[i-1];
    for ( 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()|(rand()<<16);
    }

    long data[100];
    long temp[100];

    void main (void)
    {
    make_random(data, 100);
    radixsort (data, temp, 100);
    for ( int i=0; i<100; i++ ) cout << data[i] << '\n';
    }


    {long data[100]; long temp[100]; --> void main() or ->>import to class...}

Các Chủ đề tương tự

  1. Thuật toán trực tuyến - Thuật toán online
    Bởi mr.datnh trong diễn đàn Hướng dẫn
    Trả lời: 0
    Bài viết cuối: 15-08-2014, 11:24 PM
  2. Thuật toán và Giải thuật
    Bởi mr.datnh trong diễn đàn Hướng dẫn
    Trả lời: 0
    Bài viết cuối: 27-07-2013, 02:51 PM
  3. Thuật toán - giải thuật
    Bởi mr.datnh trong diễn đàn Hướng dẫn
    Trả lời: 8
    Bài viết cuối: 17-07-2013, 12:01 AM

Bookmarks

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •