Инструкция
1
Запишите заданную числовую последовательность. Выполните ее сортировку по возрастанию. В наборе слева направо числа должны располагаться от меньшего значения к большему.
2
Если ряд содержит нечетное количество чисел, за его медиану следует принять значение, стоящее ровно посередине набора. Например, имеется числовая последовательность вида: 400 250 640 700 900 100 300 170 550. В этом наборе числа стоят не по порядку. После его упорядочивания по возрастанию получится следующий ряд: 100 170 250 300 400 550 640 700 900. Как видно, последовательность состоит из 9 значений. Медианой числового набора в данном случае будет являться число 400. Именно от его позиции по одну сторону все числа не больше медианы, а по другую – не меньше.
3
При рассмотрении значений четной последовательности центральными будут уже не один, а два числа: m и k. Найдите эти числа также после упорядочивания набора по возрастанию. Медиана этом случае будет являться средним арифметическим показателем данных значений. Вычислите ее по формуле (m + k)/2. Например, в отсортированном ряду 200 400 600 4000 30000 50000 числа 600 и 4000 занимают центральные позиции. Следовательно, медианой числовой последовательности будет следующее значение: (600 + 4000)/2 = 2300.
4
Если набор значений содержит большое количество данных, вручную довольно сложно его сортировать и определять центр ряда. С помощью небольшой программы легко найти медиану последовательности чисел любой размерности. Пример кода на языке Pascal:
var M_ss: array[1..200] of integer;
med: real;
k, i, j: integer;
begin
(*Сортировка чисел по возрастанию*)
for j:=1 to 200-1 do
for i:=1 to 200-j do
begin
if M_ss[i] > M_ss[i+1] then
k:=M[i];
M_ss[i]:=M_ss[i+1];
M_ss[i+1]=k;
end;
(*Поиск медианы*)
if (length(M_ss) mod 2)=0 then
med:=( M_ss[trunc(length(M_ss))] + M_ss[trunc(length(M_ss))+1])/2
else
med:=M_ss[trunc(length(M_ss))];
end.
В переменной med содержится значение медианы заданного числового массива M_ss.
var M_ss: array[1..200] of integer;
med: real;
k, i, j: integer;
begin
(*Сортировка чисел по возрастанию*)
for j:=1 to 200-1 do
for i:=1 to 200-j do
begin
if M_ss[i] > M_ss[i+1] then
k:=M[i];
M_ss[i]:=M_ss[i+1];
M_ss[i+1]=k;
end;
(*Поиск медианы*)
if (length(M_ss) mod 2)=0 then
med:=( M_ss[trunc(length(M_ss))] + M_ss[trunc(length(M_ss))+1])/2
else
med:=M_ss[trunc(length(M_ss))];
end.
В переменной med содержится значение медианы заданного числового массива M_ss.