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

Đề tài: ý nghĩa và cách sử dụng hàm băm

  1. #1
    Ngày gia nhập
    09 2010
    Bài viết
    7

    Angry ý nghĩa và cách sử dụng hàm băm

    cho mình hỏi cách dùng và ý nghĩa của hàm băm trong C

  2. #2
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Trích dẫn Nguyên bản được gửi bởi thanhhaqn206 Xem bài viết
    cho mình hỏi cách dùng và ý nghĩa của hàm băm trong C
    Hàm băm là một hàm dùng để băm key theo một cách thức nào đó. Mục đích để đưa ra chỉ số phù hợp cho giá trị tương ứng.
    Giả sử có một mảng số nguyên: 1 3 2 4 9 8
    Giả sử cho một dải size là: 7 ----> bảng băm: T [7] <Sau khi băm giá trị xong ta lưu lại vào bảng băm>
    Giả sử có hàm băm

    int hashfunc (int n)
    {
    return n%size;
    }

    ---> băm 1: ta được i = 1: ----> T[1] = 1;
    ---> băm 3: ta được i = 3:-----> T[3] = 3;
    ---> băm 2: ta được i = 2: ----> T[2] = 2;
    ---> băm 4: 4;
    ---> băm 9: ta được i = 2: Mặt khác T[2] = 2 -----> Thăm dò vị trí tiếp có nghĩa là băm với giá trị i+1 ---> T[3] không đc -----> i tăng lên tiếp ----> ... T[5] = 9.
    -------------> ....
    ---> Đương nhiên ta có thể tăng size lên để tránh va chạm. Nhưng làm cái gì cũng có 2 mặt của nó. Lợi về bộ nhớ sẽ gặp va chạm, điều ngược lại cũng đúng

    ----> Nếu thiết kế bảng băm là dslk sẽ tránh được va chạm, không phải băm lại, ..... Đương nhiên xác suất của cách này duyệt lâu hơn
    Đã được chỉnh sửa lần cuối bởi beautifulsoul84hung : 26-11-2011 lúc 04:19 AM.
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

  3. #3
    Ngày gia nhập
    09 2010
    Bài viết
    7

    mình có đoạn code về hàm băm như thế này nè mà mình không hiểu.các bạn giải thích giùm mình nhé

    C++ Code:
    1. int find_match(int hash_prefix,unsigned int hash_character) //ham bam
    2. {
    3. int index;
    4. int offset;
    5.  
    6.   index = (hash_character << HASHING_SHIFT) ^ hash_prefix;
    7.   if (index == 0)
    8.      offset = 1;
    9.   else
    10.      offset = TABLE_SIZE - index;
    11.   while (1)
    12.   {
    13.      if (code_value[index] == -1)
    14.         return(index);
    15.      if (prefix_code[index] == hash_prefix &&
    16.           append_character[index] == hash_character)
    17.         return(index);
    18.      index -= offset;
    19.      if (index < 0)
    20.         index += TABLE_SIZE;
    21.   }
    22. }
    Đã được chỉnh sửa lần cuối bởi beautifulsoul84hung : 27-11-2011 lúc 03:12 PM. Lý do: cho code vào tag

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

  1. bảng băm đóng, bảng băm mở trong lập trình C#?
    Gửi bởi mysad trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 11-12-2010, 01:20 PM
  2. Lập trình C++ Từ điển sử dụng bảng băm và cây AVL!
    Gửi bởi kidqn 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: 05-08-2010, 07:00 AM
  3. Băm 1 từ điển ???
    Gửi bởi depzaivai trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 17-06-2010, 03:08 PM
  4. ứng dụng từ điền sử dụng bảng băm
    Gửi bởi daretofail trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 04-06-2010, 06:18 AM
  5. Bảng băm-ứng dụng từ điển
    Gửi bởi canhocthem 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: 01-02-2008, 10:19 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