![]() |
|
Модераторы: bsa |
![]()
|
|
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Прошу оценить этот алгоритм бинарного поиска в массиве.
Не очень ли он туп и не оптимизирован? Других алгоритмов бинарного поиска не видел, и до этого никогда не сталкивался с ними. Поэтому, сильно не смейтесь, пожалуйста. Это мой первый алгоритм двоичного поиска, никуда не подсматривал, примеров не видел.
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Riddik, это программа, реализующая алгоритм. А алгоритмы отображаются иначе, например, блок-схемами.
Для начала могу сказать, что не ожидал увидеть вложенные циклы. Бинарный поиск - поиск делением пополам. Т.е. у тебя есть некий диапазон отсортированных по возрастанию (можно по убыванию, но тогда "больше" и "меньше" нужно поменять местами) значений и есть то, что ты ищешь (итого: 3 параметра): 0. если диапазон пуст - выходишь, так как не нашел 1. берешь значение из середины диапазона 2. сравниваешь его с искомым 3. если оно равно, то выходишь - нашел 4. если меньше, то переходишь на п. 0 с диапазоном от начала до середины (невключительно) 5. если больше, то переходишь на п. 0 с диапазоном от середины (невключительно) до конца. Алгоритм описан, например, тут: http://algolist.manual.ru/search/bin_search.php Это сообщение отредактировал(а) bsa - 6.2.2009, 17:23 |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Спасибо за ссылку и за комментарий))
Вложенный цикл просто потому, чтобы можно было пользователю производить поиск столько, сколько он хочет. А сам поиск в программе реализован одним циклом. Судя по вашей схеме, почти то же самое я и сделал)) Добавлено через 8 минут и 5 секунд только не так изящно) |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Проще
Это сообщение отредактировал(а) Riddik - 6.2.2009, 18:17 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
| math64 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Есть уже готовые реализации в стандартной библиотеке:
|
||||
|
|||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
bsa, да, я потом исправил, спасибо)
math64, спасибо, буду знать))) |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |