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

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

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

Бинарный поиск не работает для ключа с определенным значением - C++

08.03.2015, 22:29. Просмотров 569. Ответов 2
Метки нет (Все метки)

Вообщем, написал бинарный поиск, а он не работает для ключа со значением 9, может кто объяснить, как решить эту проблему? А ещё я не совсем понимаю, какое правильное условие должно быть для выхода из цикла?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
 
int Binary_Search(int*, int, size_t);
 
int main()
{
    int A[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
    cout << Binary_Search(A, 8, 10) << endl;
 
    return 0;
}
 
int Binary_Search(int *array, int key, size_t size)
{
    unsigned low_border = 0, high_border = size - 1;
    unsigned middle;
 
    while(high_border != low_border)
    {
        middle = (low_border + high_border) / 2;
 
        if(array[middle] == key)
            return middle;
 
        else if(array[middle] > key)
            high_border = middle;
 
        else if(array[middle] < key)
            low_border = middle;
    }
 
    return -1;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2015, 22:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Бинарный поиск не работает для ключа с определенным значением (C++):

Вставить функцию в код по подсчету времени на нахождения ключа в массиве (бинарный поиск) - C++
помогите вставить функцию в код по подсчету времени на нахождения ключа в массиве(бинарный поиск) . вот код #include &lt;stdlib.h&gt; ...

Неправильно работает бинарный поиск - C++
Доброго времени суток! Бинарный поиск работает некорректно, если в качестве искомого значения взять значение посленего элемента. Помогите...

Бинарный поиск для std::list - C++
Здравствуйте. Хотел написать бинарный поиск для std::list. Пишу: //Тип coord определён выше std::list&lt;coord&gt;::iterator...

Бинарный поиск для нахождения нечетных чисел - C++
Подскажите пожалуйста как этот алгоритм линейного поиска обернуть в бинарный поиск for(int i = 0; i &lt; N; i++) { if(a % 2 != 0)...

Бинарный поиск для нахождения количества повторяющихся элементов - C++
Здравствуйте. Стоит следующая несложная задача: Дан массив (отсортированный). Например 1 1 1 4 5 6 6 6 6 6 6 6 При вводе...

Можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции? - C++
можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции?

2
KolodeznyDiver
2470 / 1601 / 186
Регистрация: 01.06.2013
Сообщений: 3,285
08.03.2015, 22:50 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int Binary_Search(int *array, int key, size_t size)
{
    unsigned low_border = 0, high_border = size - 1;
    unsigned middle;
 
    while(high_border != low_border)
    {
        middle = (low_border + high_border) / 2;
 
        if(array[middle] == key)
            return middle;
 
        else if(array[middle] > key)
            high_border = middle;
 
        else if(array[middle] < key){
            if(low_border == middle)
                if(array[high_border] == key)
                    return high_border;
                else 
                    return -1;
            low_border = middle;
        }
    }
 
    return -1;
}
1
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 67
08.03.2015, 22:58  [ТС] #3
Работает, спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2015, 22:58
Привет! Вот еще темы с ответами:

Вставка нового элемента в линейный односвязный список перед элементом с максимальным значением ключа - C++
Привет, всем. Помогите, разобраться с добавлением нового элемента в линейный односвязный список перед элементом с максимальным значением...

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

Поиск ключа в массиве - C++
1. Разработать программу, обеспечивающую выполнение следующих функций: - Формирование и вывод на экран массива случайных чисел,...

Бинарный поиск не находит второй и предпоследний элементы массива - C++
Вот вроде бы всё работает только как-то не очень правильно не находит 2 позицию в массиве и пред последнею может ещё что-то не находит , я...


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

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

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