Created
September 27, 2018 19:35
-
-
Save Dreniak/9b2b10c2c117b735b2d381b5104af254 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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