Hiện tại chúng tôi đang xử lý hàm băm trong lớp của mình. Người hướng dẫn của chúng tôi đã yêu cầu chúng tôi sử dụng hàm băm trên internet để so sánh với hai hàm chúng tôi đã sử dụng trong mã của chúng tôi.Hàm băm cho một chuỗi
Thứ nhất:
int HashTable::hash (string word)
// POST: the index of entry is returned
{ int sum = 0;
for (int k = 0; k < word.length(); k++)
sum = sum + int(word[k]);
return sum % SIZE;
}
Thứ hai:
int HashTable::hash (string word)
{
int seed = 131;
unsigned long hash = 0;
for(int i = 0; i < word.length(); i++)
{
hash = (hash * seed) + word[i];
}
return hash % SIZE;
}
đâu SIZE là 501 (Kích thước của bảng băm) và đầu vào đến từ một tập tin văn bản với hơn 20.000 từ.
Tôi đã thấy this câu hỏi với một vài ví dụ về mã nhưng không chắc chắn chính xác những gì cần tìm kiếm trong hàm băm. Nếu tôi hiểu chính xác, trong trường hợp của tôi, một băm có một đầu vào (chuỗi) và thực hiện phép tính toán để chỉ định chuỗi một số và chèn nó vào một bảng. Quá trình này được thực hiện để tăng tốc độ tìm kiếm danh sách?
Nếu logic của tôi là âm thanh, có ai có ví dụ hay tài nguyên hiển thị hàm băm khác có liên quan đến chuỗi không? Hoặc thậm chí là quá trình viết hàm băm hiệu quả của riêng tôi.
Bạn chỉ cần cung cấp 2 câu trả lời cho câu hỏi của bạn. – Pubby
Làm thế nào để người hướng dẫn của bạn có thể yêu cầu bạn phân tích hai hàm băm khi không dạy bạn điều gì về bảng băm/hàm? –
"Có ai có ví dụ hay tài nguyên hay không?" [Vâng.] (Http://en.wikipedia.org/wiki/Hash_function#Hash_function_algorithms) –