Exercise: Calculating the median of an array of numbers Write a method median which takes an Array of numbers as its input and returns the median value.
# CALCULATE THE MEDIAN OF AN ARRAY OF NUMBERS # PSEUDOCODE # INPUT: array of numbers # OUPUT: the median number of the elements of the input array # STEPS: sort the array # determine if the array has one or two middle values by checking # if the length is even or odd # if there is an odd length, return the value of the middle element # otherwise return the average of the two middle elements' values # INITIAL CODE: def median(array) array.sort! n = array.length if n % 2 != 0 return array[(n - 1) / 2] else return (array[n/2] + array[(n/2)-1]) / 2.0 end end # REFACTORED CODE: def median(array) mid = array.length / 2 if array.length.odd? array.sort![mid] else (array.sort![mid - 1] + array[mid]) / 2.0 end end # REVIEW/REFLECT My approach for this problem was pretty solid, I believe. I # can't figure out much more to refactor; most solutions I have found within # DBC and outside have pretty simliar logic and use of methods. I did find out # about this little #odd? method, and its complement #even?, and now I can # avoid using the modulus technique for testing even/odd. I'll have to # remember these!