Commit 265bb7e
Changed files (2)
lib
spec
lib/merge_sort.rb
@@ -1,13 +1,8 @@
class MergeSort
def sort(items)
return items if items.size <= 1
-
- if items.size % 2 == 0
- pivot = items.size/2
- else
- pivot = (items.size/2) + 1
- end
-
+ pivot = items.size/2
+ pivot += 1 unless items.size % 2 == 0
split = items.each_slice(pivot).to_a
merge(sort(split[0]), sort(split[1]))
end
spec/merge_sort_spec.rb
@@ -15,6 +15,8 @@ describe MergeSort do
n = 600
numbers = Array.new(n) { rand(n) }
sorted_numbers = numbers.sort
- sut.sort(numbers).should == sorted_numbers
+ Benchmark.bmbm do |x|
+ x.report("merge sort") { sut.sort(numbers).should == sorted_numbers }
+ end
end
end