| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Бинарный поиск в одномерном массиве |
| Автор: Riddik 6.2.2009, 16:51 | ||
| Прошу оценить этот алгоритм бинарного поиска в массиве. Не очень ли он туп и не оптимизирован? Других алгоритмов бинарного поиска не видел, и до этого никогда не сталкивался с ними. Поэтому, сильно не смейтесь, пожалуйста. Это мой первый алгоритм двоичного поиска, никуда не подсматривал, примеров не видел.
|
| Автор: bsa 6.2.2009, 17:22 |
| Riddik, это программа, реализующая алгоритм. А алгоритмы отображаются иначе, например, блок-схемами. Для начала могу сказать, что не ожидал увидеть вложенные циклы. Бинарный поиск - поиск делением пополам. Т.е. у тебя есть некий диапазон отсортированных по возрастанию (можно по убыванию, но тогда "больше" и "меньше" нужно поменять местами) значений и есть то, что ты ищешь (итого: 3 параметра): 0. если диапазон пуст - выходишь, так как не нашел 1. берешь значение из середины диапазона 2. сравниваешь его с искомым 3. если оно равно, то выходишь - нашел 4. если меньше, то переходишь на п. 0 с диапазоном от начала до середины (невключительно) 5. если больше, то переходишь на п. 0 с диапазоном от середины (невключительно) до конца. Алгоритм описан, например, тут: http://algolist.manual.ru/search/bin_search.php |
| Автор: Riddik 6.2.2009, 17:54 |
| Спасибо за ссылку и за комментарий)) Вложенный цикл просто потому, чтобы можно было пользователю производить поиск столько, сколько он хочет. А сам поиск в программе реализован одним циклом. Судя по вашей схеме, почти то же самое я и сделал)) Добавлено через 8 минут и 5 секунд только не так изящно) |
| Автор: Riddik 6.2.2009, 18:12 | ||
Проще
|
| Автор: bsa 6.2.2009, 18:33 | ||
|
| Автор: math64 6.2.2009, 19:09 | ||||
Есть уже готовые реализации в стандартной библиотеке:
|
| Автор: Riddik 6.2.2009, 23:06 |
| bsa, да, я потом исправил, спасибо) math64, спасибо, буду знать))) |