Заполнить массив случайными числами и отсортировать его. Ввести число X. Используя...

0 голосов

Заполнить массив случайными числами и отсортировать его. Ввести число X.
Используя двоичный поиск, определить, сколько чисел, равных X, находится в массиве.
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 7 9
Введите число X:
4
Число 4 встречается 2 раз(а).
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 7 9
Введите число X:
14
Число 14 не встречается.


спросил от (82 баллов) в категории Информатика
2 Ответы
0 голосов
ответил от Отличник (9.7k баллов)
 
Лучший ответ

Добавьте двоичный поиск для поиска элемента массива, равного x. 
{ двоичный поиск }
{ l - левая граница для поиска }
{ r - правая граница для поиска }
l:=1;
r:=n;
while true do
 begin
   i:=(l+r) div 2;
   if a[i]=x then break;
   if a[i]>x then r:=i
   else  if a[l]end;
k:=0;
for i:=l to r do
 if a[i]=x then k:=k+1;
{ конец двоичного поиска }

оставил комментарий от Отличник (9.7k баллов)

В двоичном поиске bag - не работает, когда числа х нет в массиве, исправить не могу, ответ не коррекрируется

0 голосов
ответил от (30 баллов)

:D 
Ну го Ничего если  на паскале напишу ? 
uses crt;
var  a:array[1..50] of integer ;i,j,n,x,t,k:integer;b:string;
begin
read(n);     
for i:= 1 to n do     
begin     
a[i]:=random(15);     
write(a[i],' ');     
end;     
writeln;     
for i:= 1 to n-1 do     
for j:= i+1 to n do     
if a[i]> a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;     
for i:= 1 to n do     
write(a[i],' ');     
writeln;     
read(x);     
for i:= 1 to n do     
 if a[i] = x then k:=k+1;     
 str(k,b);     
n:=length(b);     
 if k in  [11..19] then write (k,' раз') else     
 if k = 0 then  write('число ',x,' не встречается ')else     
case b[n] of     
 '0','1','5','6','7','8','9': write (k,' раз');     
 '3','4','2': write (k,' раза') ;     
end;
end.

оставил комментарий от (82 баллов)

Я ж не уточнил, на паскале и надо:)

оставил комментарий от (30 баллов)

Ну кароч как то так вроде бы все орфографические правила учёл

оставил комментарий от (82 баллов)

Спасибо

оставил комментарий от Отличник (9.7k баллов)

добавьте двоичный поиск

...