Попробуйте (для удобства):
function getMedian(plug:Array):Number
{
// Even length.
if(plug.length % 2 == 0)
{
var a:Number = plug[int(plug.length / 2) - 1];
var b:Number = plug[int(plug.length / 2)];
return (a + b) / 2;
}
// Odd length.
return plug[int(plug.length / 2)];
}
// Tests.
trace(getMedian([2,5,3,4,6,1])); // 3.5
trace(getMedian([2,5,3,4,6])); // 3
Кстати, я вполне уверен, что ваш код работает нормально, проблема в том, что вы делаете это как конкатенацию строк, а не каксумма числа здесь:
median = (sortnums[mid1] + sortnums[mid2]) / 2;
То есть вы буквально добавляете строку 1.5
к 2
и получаете 21.5
вместо 3.5
.
Попробуйте изменить свой код так, чтобы он выглядел так:
median = (Number(sortnums[mid1]) + Number(sortnums[mid2])) / 2;