Я написал код, который возвращает медиану несортированного нечетного нумерованного массива, но не возвращает медиану четного пронумерованного массива.Найти медиану массива
Я знаю, что для того, чтобы найти медиану четного пронумерованного массива, вы должны взять средние два числа массива, усреднить их, и это медиана. Я не могу перевести это в полезный код. Помимо очевидной многословности этого кода, проблема, похоже, связана с линиями 7-8, и я не понимаю, почему.
Я предпочитаю подсказки для ответов, но если вы скорее разместите какой-либо фиксированный код, я тоже могу принять это.
def media(array)
sorted = array.sort
list = sorted.length
if list %2 != 0
(list + 1)/2.0
else
even = ((list.to_f + 2)/2) + ((list.to_f/2)
return (even/2)
end
end
младший, нужно делать операции на элементах 'sorted', а не на его длину. Обратите внимание, что сортировка теперь для вас ничего не делает; 'list = array.length' будет давать одинаковые результаты. Вам нужно работать с 'sorted'. –
Для нечетной длины вы возвращаете средний показатель *. Для четной длины нет индекса, который вы можете вернуть, верно? Поэтому перепишите это так, чтобы оно возвращало рассчитанные значения. Например. для нечетного массива возвращаем 'sorted [(list + 1)/2]' и для четного массива возвращаем '(отсортированный [i] + отсортированный [i-1])/2', где вам нужно будет вычислить' i '. – Matt
Вы пытаетесь найти медианное значение * в массиве или * индекс * медианы в отсортированном массиве? Потому что ваш код, похоже, пытается сделать последнее. – wdebeaum