1 / 1 / 1
Регистрация: 30.10.2016
Сообщений: 35
1

Бинарный поиск чисел в массиве

07.11.2016, 00:30. Показов 2357. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет!
Никак не могу доработать программу: выводит только ответ для последнего значения второго массива.

Заранее спасибо.

Pascal
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
uses sysutils;
 
var x,y:array[1..1000] of longint;
    m, n, a, i ,j,temp, left, right, middle:integer;
flag:boolean;
kek: byte;
 
begin
for kek:=1 to 20 do writeln(' ');
readln(n);
readln(m);
  for i:=1 to n do begin
  read(x[i]);
  end;
 
  for j:=1 to m do begin
  read(y[j]);
  end;
 
left:=1;
right:= n;
flag:=false;
  while (left <= right) and not flag do
  begin
    middle:=(left+right) div 2;
    if y[j]<x[middle] then right:=middle-1
    else if y[j]>x[middle] then left:=middle+1
    else flag:=true;
  end;
if not flag then writeln('-1')
else writeln(y[j]);
end.
Миниатюры
Бинарный поиск чисел в массиве  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2016, 00:30
Ответы с готовыми решениями:

бинарный поиск в массиве записей
Товари програмисты хел плиз! вот задача- В памяти ЭВМ хранятся списки номеров телефонов и...

бинарный поиск в одномерном массиве строк
program poisk; {$APPTYPE CONSOLE} uses crt; const n=100; type mas=array of string; var...

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

Поиск заданного элемента в упорядоченном массиве(бинарный поиск)
Заполнить одномерный массив из n элементов по формуле приведенной в картинке. Размерность массива...

8
1 / 1 / 1
Регистрация: 30.10.2016
Сообщений: 35
07.11.2016, 01:41  [ТС] 2
Была бы благодарна за любую маленькую наводку.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7775 / 4603 / 2825
Регистрация: 22.11.2013
Сообщений: 13,085
Записей в блоге: 1
07.11.2016, 08:32 3
Pascal
1
2
3
4
5
6
7
  ReadLn(m,n);
  for i:=1 to n do Read(x[i]);
  for i:=1 to m do begin
    Read(y);
    {бинарный поиск первого вхождения y в массиве x}
    if нашли then Write(' ',left) else Write(' ',-1);
  end; WriteLn;
0
1 / 1 / 1
Регистрация: 30.10.2016
Сообщений: 35
08.11.2016, 09:21  [ТС] 4
Ничего не получается, к сожалению.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7775 / 4603 / 2825
Регистрация: 22.11.2013
Сообщений: 13,085
Записей в блоге: 1
08.11.2016, 10:26 5
Лучший ответ Сообщение было отмечено bormant как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  a: array [0..99999] of Integer;
  m, n, i, b, lt, rt, md: Integer;
begin
  Read(m,n);
  for i:=0 to m-1 do Read(a[i]);
  for i:=1 to n do begin
    Read(b); lt:=0; rt:=m;
    while lt<rt do begin
      md:=lt+(rt-lt) div 2;
      if a[md]<b then lt:=md+1 else rt:=md;
    end;
    if (lt<m) and (a[lt]=b) then Write(' ',lt+1) else Write(' ',-1);
  end; WriteLn;
end.
Добавлено через 4 минуты
Для массива от 1 соответственно:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  a: array [1..100000] of Integer;
  m, n, i, b, lt, rt, md: Integer;
begin
  Read(m,n);
  for i:=1 to m do Read(a[i]);
  for i:=1 to n do begin
    Read(b); lt:=1; rt:=m+1;
    while lt<rt do begin
      md:=lt+(rt-lt) div 2;
      if a[md]<b then lt:=md+1 else rt:=md;
    end;
    if (lt<=m) and (a[lt]=b) then Write(' ',lt) else Write(' ',-1);
  end; WriteLn;
end.
1
1 / 1 / 1
Регистрация: 30.10.2016
Сообщений: 35
08.11.2016, 17:07  [ТС] 6
Спасибо!

Добавлено через 2 часа 52 минуты
Единственный вопрос, какой хочу задать:
как учесть пустые входные данные в данном задании?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7775 / 4603 / 2825
Регистрация: 22.11.2013
Сообщений: 13,085
Записей в блоге: 1
09.11.2016, 10:40 7
Что значит пустые?

Добавлено через 1 минуту
И как именно вы хотите их учесть?
0
1 / 1 / 1
Регистрация: 30.10.2016
Сообщений: 35
09.11.2016, 10:53  [ТС] 8
bormant, уже не хочу Спасибо.
Сначала у меня опять тесты не проходило, потом оказалось, что надо было взять лонгинт вместо интеджер.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7775 / 4603 / 2825
Регистрация: 22.11.2013
Сообщений: 13,085
Записей в блоге: 1
09.11.2016, 11:58 9
Если тестирующая система использует FPC, можно добавлять в начало {$mode ObjFPC}.
В этом режиме Integer является синонимом Longint, в отличие от используемого по умолчанию {$mode FPC}, где Integer = Smallint.
Описание режимов:
http://www.freepascal.org/docs... ogap4.html
1
09.11.2016, 11:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2016, 11:58
Помогаю со студенческими работами здесь

В одномерном массиве состоящем из n вещественных элементов сделать бинарный поиск числа А в упорядоченном массиве
Всем привет помогите решить задачи 1) В одномерном массиве состоящем из n вещественных элементов:...

Бинарный поиск. В массиве A(N) найти элементы, принадлежащие диапазону [М, К]
В массиве A(N) найти элементы, принадлежащие диапазону .

Бинарный поиск. В массиве X(К) заменить каждый пятый элемент на ноль
В массиве X(К) заменить каждый пятый элемент на ноль.

В отсортированном массиве произвести бинарный поиск индекса элемента со значением K
Дан линейный целочисленный массив из N элементов. Отсортировать элементы массива в порядке не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru