|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.05.2010, 18:22 | #1 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
Бинарный поиск
Ищу индекс элемента методом бинарного поиска:
Код:
|
24.05.2010, 22:53 | #2 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
Попробуй так:
repeat Mid:=(Bot + Top) div 2; if Item < MyArray[Mid] then Top:=Mid; if Item > MyArray[Mid] then Bot:=Mid; if Item = MyArray[Mid] then bol:=true; until bol or (Top <=bot);
ICQ: 593-013-807
|
24.05.2010, 23:06 | #3 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
Попробовал. Результат, к сожалению, тот же.
Какие ещё будут предложения? |
24.05.2010, 23:22 | #4 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
Вот решение твоей проблемы:
repeat Mid:=(Bot + Top) div 2; if Item < MyArray[Mid] then Top:=Mid-1; if Item > MyArray[Mid] then Bot:=Mid+1; if Item = MyArray[Mid] then bol:=true; until bol or (Top <=bot);
ICQ: 593-013-807
|
24.05.2010, 23:35 | #5 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
Теперь одини элементы находит, другие почему-то нет. Очень странно.
|
25.05.2010, 00:07 | #6 | |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
ды е..п..р..с..т. Ща разберемся!
Цитата:
У меня все работает! Блин, должно быть условие until bol or (Top < Bot); Попробуй вот так: Код:
ICQ: 593-013-807
Последний раз редактировалось Stilet; 25.05.2010 в 08:20. |
|
25.05.2010, 00:34 | #7 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
Бьюсь головой об компьютерный стол - теперь виснет, если искомый элемент меньше минимального элемента в массиве.
ИМХО Похоже, Delphi над нами издевается. Конечно! Если нужно, выкладываю полный исходник. |
25.05.2010, 01:08 | #8 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
Самый простой способ решить проблему - использовать массив с индексами [1..10] вместо [0..9]
Но можешь использовать и свой массив [0..9]. Я исправил ошибку. Вот проект
ICQ: 593-013-807
Последний раз редактировалось Stilet; 25.05.2010 в 08:20. |
25.05.2010, 14:57 | #9 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
Большое спасибо, Don Karleone! Я у тебя в долгу.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бинарный поиск в Delphi | Алексей777911 | Помощь студентам | 8 | 03.02.2011 18:00 |
Бинарный поиск в Memo | Stranger333 | Общие вопросы Delphi | 0 | 05.05.2010 21:23 |
Бинарный поиск | 0IceCube0 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 13.04.2010 15:52 |
Бинарный поиск | Gendalf | Помощь студентам | 1 | 07.07.2007 22:09 |