class SnowArraySort::MaSort

Public Class Methods

merge(left, right) click to toggle source
# File lib/SnowArraySort/merge_array_sort_snow.rb, line 24
def self.merge(left, right)
  sorted = []
  until left.empty? or right.empty?
    (left.first <= right.first) ? sorted << left.shift : sorted << right.shift
  end
  sorted + left + right
end
merge_sort(lists) click to toggle source
# File lib/SnowArraySort/merge_array_sort_snow.rb, line 5
def self.merge_sort(lists)
  return lists if lists.count <= 1

  middle  = lists[0..(lists.count / 2) - 1 ]
  left = lists[0..middle.count - 1]
  right = lists[middle.count..lists.count]

  x = merge_sort(left)
  y = merge_sort(right)
end
mergesort(container) click to toggle source
# File lib/SnowArraySort/merge_array_sort_snow.rb, line 16
def self.mergesort(container)
  return container if (container.size <= 1)
  mid   = container.size / 2
  left  = container[0...mid]
  right = container[mid...container.size]
  merge(mergesort(left), mergesort(right))
end