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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Help
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 5
#1

Бинарный поиск (самое левое вхождение) - C++

23.07.2014, 12:21. Просмотров 463. Ответов 1
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
int binsearch (int a[],int key, int l, int h)
{
    int medium;
    medium=(l+h)/2;
    if (l>h) return (l);
    if (a[medium]>key) return (binsearch (a,key,l,medium-1)); else return (binsearch (a,key,medium+1,h));
}
Данный алгоритм находит самое правое вхождение элемента. Как найти самое левое?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2014, 12:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бинарный поиск (самое левое вхождение) (C++):

Поиск числа в двумерном массиве (бинарный поиск) - C++
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...

Бинарный поиск - C++
Что переделать в программе, чтобы она находила первый элемент больше или равный заданному? #include "stdafx.h" #include <iostream> ...

Бинарный поиск - C++
за какое время работает бинарный поиск?

Бинарный поиск - C++
Здравствуйте, помогите пожалуйста написать бинарный поиск одного элемента, текст читается из файла. Лабу сдавать в понедельник а я не знаю...

Бинарный поиск - C++
Реализуйте алгоритм бинарного поиска. Входные данные В первой строке входных данных содержатся натуральные числа N и K . Во второй...

Бинарный поиск - C++
Писал алгоритм бинарного поиска по массиву строк. В результате, почему-то, периодически функция не находит строку, которая есть. int...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
salam
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 728
24.07.2014, 05:43 #2
C++
1
2
3
4
5
6
7
8
9
10
11
    int a[15] = { 1, 2, 2, 3, 3, 4, 5, 5, 5, 6, 7, 8, 8, 9, 10 };
    int x;
    cin >> x;
    int l = 0, r = 15;
    while(r - l > 1) {
        int mid = (l + r) >> 1;
        if(a[mid] < x)
            l = mid;
        else r = mid;
    }
    cout << r << endl;
инвариант должен быть: http://www.cyberforum.ru/cgi-bin/latex.cgi?l указывает на меньшие, http://www.cyberforum.ru/cgi-bin/latex.cgi?r - на большие либо равные.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 05:43
Привет! Вот еще темы с ответами:

Бинарный поиск - C++
Вообщем, написал бинарный поиск, а он не работает для ключа со значением 9, может кто объяснить, как решить эту проблему? А ещё я не совсем...

Бинарный поиск - C++
Написал программу бинарного поиска элемента v. Не могу понять в чем ошибка, не считает количество элементов массива удовлетворяющий...

Бинарный поиск - C++
Всем привет! У меня вот тут маленькая проблемка! Помогите исправить, а то сама что-то не могу!! (( Когда прога просит ввести ключ...

Бинарный поиск - C++
Каким образом выполнить бинарный поиск определнного значения в отсортированном массиве?


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru