Skip to content

Instantly share code, notes, and snippets.

@jheth
Created January 25, 2015 03:20
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 jheth/b512bc71864c70f76333 to your computer and use it in GitHub Desktop.
Save jheth/b512bc71864c70f76333 to your computer and use it in GitHub Desktop.
Ruby Merge Sort
def mergesort( a )
n = a.size
return a if ( n == 1 )
l1 = a[0...(n/2)]
l2 = a[(n/2)..n]
l1 = mergesort( l1 )
l2 = mergesort( l2 )
return merge( l1, l2 )
end
def merge( left, right )
if left.empty?
right
elsif right.empty?
left
elsif left.first < right.first
[left.first] + merge(left[1..left.length], right)
else
[right.first] + merge(left, right[1..right.length])
end
end
puts mergesort([7,4,3,6,8,2,1,9,5]).join(' ')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment