Advertisement
Guest User

Untitled

a guest
Feb 26th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. #!/usr/bin/ruby
  2. def merge(a, l, r)
  3. nl = l.length
  4. nr = r.length
  5. i, j, k = [0]*3
  6. while i < nl and j < nr
  7. if l[i] <= r[j]
  8. a[k] = l[i]
  9. i += 1
  10. else
  11. a[k] = r[j]
  12. j += 1
  13. end
  14. k += 1
  15. end
  16. while i < nl
  17. a[k] = l[i]
  18. i += 1
  19. k += 1
  20. end
  21. while j < nl
  22. a[k] = r[j]
  23. j +=1
  24. k +=1
  25. end
  26. return a
  27. end
  28.  
  29. def mergesort(a)
  30. n = a.length
  31. return a if n < 2
  32. mid = n/2
  33. l, r = Array.new(mid), Array.new(n-mid)
  34. for i in (0..mid-1) do
  35. l[i] = a[i]
  36. end
  37. for i in (mid..n-1) do
  38. r[i-mid] = a[i]
  39. end
  40. mergesort(l)
  41. mergesort(r)
  42. return merge(a, l,r)
  43. end
  44.  
  45. #ar = STDIN.gets.chomp.split(" ").map{|x|x.to_i};
  46. a = mergesort([42, 37, 2, 5, 7, 8, 1, 17])
  47. puts a
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement