Форум программистов, компьютерный форум CyberForum.ru

Двоичный поиск - C++

Восстановить пароль Регистрация
 
Apokalypsys
6 / 6 / 0
Регистрация: 21.04.2013
Сообщений: 19
21.04.2013, 19:48     Двоичный поиск #1
Всем привет!
Решал задачу "Бинарный поиск. Дана последовательность чисел a1; a2; ...; an. Найти элемент данной последовательности, который был бы равен заданному числу M методом бинарного поиска. Вывести индекс найденного элемента или -1, если таковой найден не был".
Вот код алгоритма:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int binary_search(vector<int> arr, int key) {
    int last = arr.size();
    int index = last/2;
    int c = index + 1;
    for (int i = 0; i < c; i++) {
        if (arr[index] == key) goto l1;
        else if (arr[index] > key) {last = index; index /= 2;}
        else if (arr[index] < key) index = (index + last) / 2;
    }
    index = -1;
l1:
    return index;
}
Я проверял его на массивах до 1000, но всё таки, если здесь есть ошибки, укажите на них, пожалуйста. Желательно не исправлять, а говорить к чему она может привести.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2013, 19:48     Двоичный поиск
Посмотрите здесь:

Двоичный поиск C++
Двоичный поиск C++
Двоичный поиск C++
C++ Двоичный поиск в map
C++ Двоичный (бинарный) поиск
двоичный поиск C++
двоичный поиск C++
Двоичный поиск C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 20:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru