Показать сообщение отдельно
  #27  
Старый 14.02.2015, 17:20
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Цитата:
Сообщение от lmikle
Код:
function Hash(S : String; HashSize : Integer) : Integer;
var
  Sm : Int64;
begin
  Sm := 0;
  For I := 1 To Length(S-1) Do
    Sm := (Sm + Ord(S[i])) * 31;
  Result := (Sm + Ord(S[Length(S)])) mod HashSize;
end;
Далее создаешь массив. Добавление - вычисление хэша (т.е. получение индекса) и помещение в нужную ячейку данных. Ну тут еще коллизии надо разрешить, но это делается просто сдвигом по массиву. Поиск аналогично. С удалением сложнее. Там надо делать спец признак, иначе есть возможность потерять некоторые строки.
Где-то из этой области? Есть где по-подробнее почитать?
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием