I've implemented merge sort an integer array. Should I change them to more meaningful names? Overall, any further suggestions on this code? I would like to improve my coding style and to shorten the code.
class MergeSortAlgorithm def sort(numbers) if numbers.size <= 1 return numbers end array_size = numbers.size half_of_size = (array_size / 2).round left_array = numbers.take(half_of_size) right_array = numbers.drop(half_of_size) sorted_left_array = sort(left_array) sorted_right_array = sort(right_array) merge(sorted_left_array, sorted_right_array) end def merge(left_array, right_array) if right_array.empty? return left_array end if left_array.empty? return right_array end smallest_number = if left_array.first <= right_array.first left_array.shift else right_array.shift end recursive = merge(left_array, right_array) [smallest_number].concat(recursive) end end merge_sort = MergeSortAlgorithm.new puts merge_sort.sort([4, 92, 1, 39, 19, 93, 49, 10].shuffle)