Основы программирования. Динамические массивы. Списки. Ассоциативные массивы. Деревья. Хеш-таблицы - 48 стр.

UptoLike

Составители: 

50
взгляд. Приведем, например, упоминаемую в начале пункта хеш-функцию для
английского словаря, вырезающую из любого слова первую букву:
function Hash(s: string): integer;
begin
if Length(s)=0 then
Result:=0
else Result:=Ord(s[1]) mod 26;
end;
Эта хеш-функция неудачна по двум причинам. Во-первых, количество слов, на-
чинающихся на разные буквы, существенно различается, т.е. не соблюдается ос
-
новной принцип хешированияперемешивание. Во-вторых, при хранении боль-
шого количества строк в хеш-таблице значения N=26 уже недостаточно. Более
удачной является хеш-функция, учитывающая все символы строки, например, та-
кая:
function Hash(s: string): integer;
var i: integer;
begin
Result:=0;
for i:=1 to Length(s) do
Result:=(Result*17+Ord(s[i])) mod N;
end;
Литература
1. Зеленяк О. Практикум программирования на Turbo Pascal / О. Зеленяк. – М.:
DiaSoft, 2002. – 310 с.
2. Ставровский А. Турбо Паскаль 7.0 / А.Ставровский. – Киев: BHV, 2001. – 400 с.
3. Вирт Н. Алгоритмы и структуры данных / Н. Вирт. – М.: Мир, 1989. – 360 с.