Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 67
#1

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

08.03.2015, 22:29. Просмотров 578. Ответов 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
Ответы с готовыми решениями:

Вставить функцию в код по подсчету времени на нахождения ключа в массиве (бинарный поиск)
помогите вставить функцию в код по подсчету времени на нахождения ключа в...

Неправильно работает бинарный поиск
Доброго времени суток! Бинарный поиск работает некорректно, если в качестве...

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

Бинарный поиск для std::list
Здравствуйте. Хотел написать бинарный поиск для std::list. Пишу: //Тип...

Бинарный поиск для нахождения нечетных чисел
Подскажите пожалуйста как этот алгоритм линейного поиска обернуть в бинарный...

2
Curry
2546 / 1712 / 219
Регистрация: 01.06.2013
Сообщений: 3,540
Записей в блоге: 7
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

Бинарный поиск для нахождения количества повторяющихся элементов
Здравствуйте. Стоит следующая несложная задача: Дан массив...

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

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


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

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

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