Відомості про масу кожного учня та учениці вашого класу. обчисліть середнє арифметичне, стандартне відхилення, моду й медіану для рядів даних таких вибірок: третина хлопців вашого класу, третина дівчат вашого класу, усі хлопці вашого класу, усі дівчата вашого класу. проаналізуйте отримані результати і запишіть висновки.(сделайте табличку)
Просто прогоняем бинарный поиск дважды, сначала ищем ближайшее число, не большее нужного, потом не меньшее. Для того, чтобы такие числа были, можно дописать в массив очень большое число и очень маленькое. Затем выбираем из этих двух найденных чисел то, что будет ближе.
Пример реализации:
def bin_search(arr, target, kind="<="):
assert kind in ["<=", ">="]
if kind == "<=":
comp = lambda a, b: a <= b
else:
comp = lambda a, b: a < b
l = 0
r = len(a) - 1
while l < r - 1:
m = (l + r) // 2
if comp(a[m], target):
l = m
else:
r = m
if kind == "<=":
return arr[l]
else:
return arr[r]
def nearest(arr, target):
nearest_le = bin_search(arr, target, "<=")
nearest_ge = bin_search(arr, target, ">=")
if nearest_ge - target < target - nearest_le:
return nearest_ge
else:
return nearest_le
_ = input()
a = [int(x) for x in input().split()]
a = [float("-Infinity")] + a + [float("+Infinity")]
for target in map(int, input().split()):
print(nearest(a, target))
pascal
Объяснение:
procedure sortmas(a: array of integer);
var i, j, min, ind: integer;
begin
for i := 0 to Length(a) - 2 do
begin
min := a[i]; ind := i;
for j := i + 1 to Length(a) - 1 do
if a[j] < min then
begin
min := a[j]; ind := j;
end;
a[ind] := a[i]; a[i] := min;
end;
end;
var a: array of integer;
n , i: integer;
begin
WriteLn('Введите размер массива: '); Read(n);
SetLength(a, n);
Randomize;
WriteLn('Содержимое массива:');
for i := 0 to Length(a) - 1 do
begin
a[i] := random(100);
Write(a[i], ', ');
end;
WriteLn;
sortmas(a);
WriteLn('Три минимальных элемента: ', a[0], ', ', a[1], ', ', a[2], ', ');
end.