Advertisement
farmi

Untitled

Jul 1st, 2022
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. def mmerge_sort(array)
  2. t1 = 0
  3. t11 = 0
  4. t1 = Time.now.to_f
  5.  
  6. def merge_sort(array)
  7. if array.length <= 1
  8. return array
  9. end
  10.  
  11. array_size = array.length
  12. middle = (array.length / 2).round
  13.  
  14. left_side = array[0...middle]
  15. right_side = array[middle...array_size]
  16.  
  17. sorted_left = merge_sort(left_side)
  18. sorted_right = merge_sort(right_side)
  19.  
  20. merge(array, sorted_left, sorted_right)
  21.  
  22. return array
  23.  
  24. end
  25.  
  26. def merge(array, sorted_left, sorted_right)
  27. left_size = sorted_left.length
  28. right_size = sorted_right.length
  29.  
  30. array_pointer = 0
  31. left_pointer = 0
  32. right_pointer = 0
  33.  
  34. while left_pointer < left_size && right_pointer < right_size
  35. if sorted_left[left_pointer] < sorted_right[right_pointer]
  36. array[array_pointer] = sorted_left[left_pointer]
  37. left_pointer+=1
  38. else
  39. array[array_pointer] = sorted_right[right_pointer]
  40. right_pointer+=1
  41. end
  42. array_pointer+=1
  43. end
  44.  
  45. while left_pointer < left_size
  46. array[array_pointer] = sorted_left[left_pointer]
  47. left_pointer+=1
  48. array_pointer+=1
  49. end
  50.  
  51. while right_pointer < right_size
  52. array[array_pointer] = sorted_right[right_pointer]
  53. right_pointer+=1
  54. array_pointer+=1
  55. end
  56.  
  57. return array
  58. end
  59. t11 = Time.now.to_f
  60. t11 = t11 - t1
  61. puts t11.to_s + "s"
  62. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement