Предмет: Информатика, автор: kotike99

Заполнить массив случайными числами и отсортировать его. Ввести число 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 не встречается.

Ответы

Автор ответа: nikitoz011
0
: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.
Автор ответа: kotike99
0
Я ж не уточнил, на паскале и надо:)
Автор ответа: nikitoz011
0
Ну кароч как то так вроде бы все орфографические правила учёл
Автор ответа: kotike99
0
Спасибо
Автор ответа: srzontmp
0
добавьте двоичный поиск
Автор ответа: srzontmp
0
Добавьте двоичный поиск для поиска элемента массива, равного 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]<x then l:=i;
end;
k:=0;
for i:=l to r do
 if a[i]=x then k:=k+1;
{ конец двоичного поиска }

Автор ответа: srzontmp
0
В двоичном поиске bag - не работает, когда числа х нет в массиве, исправить не могу, ответ не коррекрируется
Похожие вопросы