Skip to content

Instantly share code, notes, and snippets.

@Dreniak
Created September 27, 2018 19:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Dreniak/9b2b10c2c117b735b2d381b5104af254 to your computer and use it in GitHub Desktop.
Save Dreniak/9b2b10c2c117b735b2d381b5104af254 to your computer and use it in GitHub Desktop.
def merge(left, right)
return left if right[0].nil?
return right if left[0].nil?
if left[0] < right[0]
[left[0]] + merge(left[1..left.length], right)
else
[right[0]] + merge(left, right[1..right.length])
end
end
def merge_sort(arr)
return arr if arr.length <= 1
half = arr.length/2
left, right = merge_sort(arr[0..half - 1]), merge_sort(arr[half..arr.length])
merge(left, right)
end
def time_measure
mer_start = Time.now
merge_sort([9,15,25,36,48,90,45,80,50,70,39,42])
mer_end = Time.now
puts "Elapsed time: #{mer_end.to_f - mer_start.to_f}"
sort_start = Time.now
[9,15,25,36,48,90,45,80,50,70,39,42].sort
sort_end = Time.now
puts "Elapsed time: #{sort_end.to_f - sort_start.to_f}"
end
time_measure
# p merge_sort([15,40,1,3,8, 10]) # => [1, 3, 8, 10, 15, 40]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment