Использование Btree для хранения данных словаря? - PullRequest
0 голосов
/ 28 октября 2011

У меня проблема с использованием btree для хранения данных из 100 000 слов в словаре (слово включает в себя заголовок и определение), я не знаю, как хешировать 100 000 слов на 100 000 различных ключей с помощью хэш-функции, мой учитель даеткакой-то намек на то, что просто хэшируют 3 первых символа слова, но я не могу представить, что будет с каким-то словом, иметь более 3 символов.пожалуйста, помогите мне T_T

1 Ответ

0 голосов
/ 28 октября 2011

Идея здесь, вероятно, в том, что коллизии хешей хороши: вы вычисляете хеш (например, добавляя значения ASCCI первых трех символов; но это вряд ли можно квалифицировать как "хеш" в реальном мире) и сравниваете хэши,Если они равны, вы делаете (более дорогой) сравнение строк.Нравится:

int compare(Node *left, Node *right) {
    if (left->hash == right->hash) {
        return stringCompare(left, right);
    }

    if (left->hash < right->hash) {
        return -1;
    } else {
        return 1;
    }
}
...