Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
kruglov1
0 / 0 / 1
Регистрация: 04.10.2014
Сообщений: 38
1

Определить, встречается ли каждое из заданных чисел в массиве (бинарный поиск)

16.02.2015, 20:17. Просмотров 833. Ответов 4
Метки нет (Все метки)

Реализуйте алгоритм бинарного поиска.

Входные данные
В первой строке входных данных содержатся натуральные числа N и K . Во второй строке задаются N элементов первого массива, отсортированного по возрастанию, а в третьей строке – K элементов второго массива. Элементы обоих массивов - целые числа, каждое из которых по модулю не превосходит 10 в 9 степени.

Выходные данные
Требуется для каждого из K чисел вывести в отдельную строку "YES", если это число встречается в первом массиве, и "NO" в противном случае.

Примеры
входные данные
10 5
1 2 3 4 5 6 7 8 9 10
-2 0 4 9 12
выходные данные
NO
NO
YES
YES
NO
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2015, 20:17
Ответы с готовыми решениями:

Дан массив целых чисел. Определить все уникальные числа в массиве и сколько раз каждое из них встречается в массиве.
Написать программу для решения следующей задачи. Дан массив целых чисел....

Проверить, есть ли в массиве А [n] числа В и С и определить, какое из чисел встречается в массиве чаще
1. Проверить, есть ли в массиве А числа В и С и определить, какое из чисел...

Определить какое из чисел встречается в массиве чаще
Помогите написать код. Проверить есть ли в массиве А числа В и С и...

Определить, какое из чисел встречается в массиве чаще всего
8. Элементы массива расположить в обратном порядке, не используя дополнительный...

Определить модуль какого из двух чисел встречается в числовом массиве чаще
Помогите пожалуйста решить 2 задачи на c++. 1.Необходимо составить...

4
zss
Модератор
Эксперт С++
7257 / 6703 / 4243
Регистрация: 18.12.2011
Сообщений: 17,692
Завершенные тесты: 1
16.02.2015, 20:47 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream> 
#include <algorithm> 
using namespace std; 
int main() 
{ 
    int v[10]={1,2,3,4,5,6,7,8,9,10}; 
    int s[5]={-2,0,4,9,12};
    bool found; 
    for (int i = 0; i < 5; ++i) 
    { 
        found = binary_search(v , v+10, s[i]) ;
        if(found)
            cout<<"YES\n";
        else
            cout<<"NO\n";
    } 
    system("pause");
    return 0;
}
0
kruglov1
0 / 0 / 1
Регистрация: 04.10.2014
Сообщений: 38
16.02.2015, 21:12  [ТС] 3
А как реализовать ввод чисел в каждый массив?
0
tnk500
114 / 118 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
Завершенные тесты: 3
16.02.2015, 21:16 4
kruglov1, простите, в хоть немного с языком знакомы?
C++
1
2
3
4
    for(int i = 0; i < sizeOfFirstArray; ++i)       //вводим в первый массив
        cin >> array1[i];
    for(int i = 0; i < sizeOfSecArray; ++i)         //вводим во второй
        cin >> array2[i];
0
kruglov1
0 / 0 / 1
Регистрация: 04.10.2014
Сообщений: 38
16.02.2015, 21:26  [ТС] 5
То есть вот такой код.. но выдает ошибку при вводе чисел в массив
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
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int v, s;
    cin >> v >> s;
    int a[v] , b[s];
    for (int i = 0; i < v; i++)
    {
        cin >> a[i];
    }
    for (int i = 0; i < s; i++)
    {
        cin >> b[i];
    }
    bool found;
    for (int i = 0; i < 5; ++i)
    {
        found = binary_search(v , v+10, s[i]) ;
        if(found)
            cout<<"YES\n";
        else
            cout<<"NO\n";
    }
    system("pause");
    return 0;
}
Добавлено через 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
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int n, m;
    int v[n];
    cin >> n >> m;
    for (int i = 0; i < n; i++)
    {
        cin >> v[i];
    }
    int s[m];
    for (int i = 0; i < m; i++)
    {
        cin >> s[i];
    }
    bool found;
    for (int i = 0; i < 5; ++i)
    {
        found = binary_search(v , v+10, s[i]) ;
        if(found)
            cout<<"YES\n";
        else
            cout<<"NO\n";
    }
    system("pause");
    return 0;
}
0
16.02.2015, 21:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2015, 21:26

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

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

Бинарный поиск в массиве с++
Помогите, пожалуйста с задачей: Создать массив из 20-ти елементов,...


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

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

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