28 lines
672 B
Bash
28 lines
672 B
Bash
function g_median {
|
|
unset g_median_result
|
|
|
|
# Array with numbers
|
|
local g_numbers=("$@")
|
|
|
|
# sort array
|
|
local g_sorted_numbers=($(printf "%s\n" "${g_numbers[@]}" | sort -n))
|
|
|
|
# number of elements
|
|
local g_num_elements=${#g_sorted_numbers[@]}
|
|
|
|
# calculate the middle
|
|
local g_middle=$((g_num_elements/2))
|
|
|
|
local g_median
|
|
# Falls die Anzahl der Elemente ungerade ist
|
|
if ((g_num_elements % 2 == 1)); then
|
|
g_median=${g_sorted_numbers[g_middle]}
|
|
else
|
|
# Falls die Anzahl der Elemente gerade ist
|
|
g_calc "(${g_sorted_numbers[g_middle - 1]} + ${g_sorted_numbers[g_middle]}) / 2"
|
|
g_median=$g_calc_result
|
|
fi
|
|
|
|
g_median_result=$g_median
|
|
}
|