Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры: создать список жителей города http://www.cyberforum.ru/cpp-beginners/thread844551.html
нужно создать список жителей города, работа со структурой. struct sp { char fami; // фамилия char name; // имя char otch; // отчество ...
C++ Проверить, можно ли получить одну матрицу из другой путём транспонирования один или несколько раз Здравствуйте, дорогие форумчане. Нужна ваша помощь. Нужно доделать программу. Заданы квадратные матрицы А и B. Проверить, можно ли получить одну матрицу из другой путём транспонирования один или... http://www.cyberforum.ru/cpp-beginners/thread844550.html
длинная арифметика C++
Сложить 2 числа которые не входят ни в один типа данных числа могут быть как положительные так и отрицательные( сложение столбиком) плохо знаю синтаксис, но алгоритм мне ясен, считываем из строки в...
Максимальное подмножество попарно не связанных друг с другом окружностей C++
Здравствуйте, есть вот такая задача: На плоскости задано множество окружностей. Две окружности A и B назовём связанными, если они пересекаются либо существует третья окружность C заданного множества,...
C++ Программа пропускает второй и третий вводы данных http://www.cyberforum.ru/cpp-beginners/thread844509.html
Добрый день. При выполнении программки после ввода первых данных пропускает ввод остальных и сразу выдает результат. Подскажите пожалуйста в чем проблема! http://pikucha.ru/iaUnu/thumbnail/8.jpeg...
C++ Задачка с двумерным массивом (Осуществить циклический сдвиг элементов) Ребят подскажите пожалуйста код программы) 2 дня сидел над лабараторками, уже башня не варит: Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов справа или вниз (в... подробнее

Показать сообщение отдельно
Apokalypsys
6 / 6 / 0
Регистрация: 21.04.2013
Сообщений: 19

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

21.04.2013, 19:48. Просмотров 329. Ответов 0
Метки (Все метки)

Всем привет!
Решал задачу "Бинарный поиск. Дана последовательность чисел 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, но всё таки, если здесь есть ошибки, укажите на них, пожалуйста. Желательно не исправлять, а говорить к чему она может привести.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru