Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2007, 19:11   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
Восклицание Помогите с интерполяционным поиском

Обратите внимание на алгоритм:

l := 1; r := n;
while (l<>r) do
begin
m := l+(r-l)*(Key-A[l])/(A[r]-A[l]);
if Key> A[m] then l := m+1 else r := m;
end;
if A[l]=Key then <элемент найден> else <элемент не найден>;

Объясните мне, пожалуйста, как может работать этот алгоритм, если индекс массива А вещественное число. Переменной m присваивают вещественный результат.

Я не понимаю, как это сделать!
Arkuz вне форума Ответить с цитированием
Старый 14.11.2007, 19:45   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Не зная суть задачи трудно подсказывать, но если m - целое число, то можно его плучить разными способами, например вместо (Key-A[l])/(A[r]-A[l]); применить (Key-A[l]) div (A[r]-A[l]); или round((Key-A[l])/(A[r]-A[l]));
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с поиском EugenZyr Помощь студентам 1 07.05.2008 14:02
Помогите с поиском файлов Alias_Katty Помощь студентам 1 16.04.2008 15:03
Помогите с поиском 1234 БД в Delphi 5 01.04.2008 11:33
Помогите с поиском Egych PHP 1 09.08.2007 08:00