Заполнить массив случайными числами и отсортировать его. Ввести число X. Используя двоичный поиск, определить, сколько чисел, равных X, находится в массиве. Пример: Массив: 1 4 7 3 9 2 4 5 2 После сортировки: 1 2 2 3 4 4 5 7 ...
Заполнить массив случайными числами и отсортировать его. Ввести число 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 не встречается.
Ответ(ы) на вопрос:
Гость
: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.
Гость
Добавьте двоичный поиск для поиска элемента массива, равного 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]
Не нашли ответ?
Похожие вопросы