![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
![]()
Ищу индекс элемента методом бинарного поиска:
Код:
|
![]() |
![]() |
![]() |
#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
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
![]()
Попробовал. Результат, к сожалению, тот же.
Какие ещё будут предложения? |
![]() |
![]() |
![]() |
#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
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
![]()
Теперь одини элементы находит, другие почему-то нет. Очень странно.
![]() |
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
![]()
ды е..п..р..с..т. Ща разберемся!
Цитата:
У меня все работает! Блин, должно быть условие until bol or (Top < Bot); Попробуй вот так: Код:
ICQ: 593-013-807
Последний раз редактировалось Stilet; 25.05.2010 в 08:20. |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 15.04.2010
Сообщений: 98
|
![]()
Бьюсь головой об компьютерный стол - теперь виснет, если искомый элемент меньше минимального элемента в массиве.
ИМХО Похоже, Delphi над нами издевается. ![]() Конечно! Если нужно, выкладываю полный исходник. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
![]()
Самый простой способ решить проблему - использовать массив с индексами [1..10] вместо [0..9]
Но можешь использовать и свой массив [0..9]. Я исправил ошибку. Вот проект
ICQ: 593-013-807
Последний раз редактировалось Stilet; 25.05.2010 в 08:20. |
![]() |
![]() |
![]() |
#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 |