Class: MergeSort
- Inherits:
-
Object
- Object
- MergeSort
- Defined in:
- lib/compare-sort.rb
Class Method Summary collapse
Class Method Details
.merge(nums1, nums2) ⇒ Object
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/compare-sort.rb', line 203 def self.merge(nums1, nums2) # this will happen if there are an off number of arrays return nums1 if !nums2 total_length = nums1.length + nums2.length sorted_nums = [] until sorted_nums.length == total_length if nums2.empty? sorted_nums += nums1 elsif nums1.empty? sorted_nums += nums2 elsif nums2[0] < nums1[0] sorted_nums << nums2.shift else sorted_nums << nums1.shift end end return sorted_nums end |
.run(nums) ⇒ Object
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'lib/compare-sort.rb', line 183 def self.run(nums) return nums if nums == [] #split into single arrays nums.map! {|num| [num]} #run until sorted while nums.length != 1 i = 0 #iterate through the nested array and merge them while i < nums.length merged_nums = self.merge(nums[i], nums[i+1]) nums.delete_at(i+1) nums.delete_at(i) nums.insert(i, merged_nums) i += 1 end end return nums[0] end |