Commit 265bb7e

mo khan <mo@mokhan.ca>
2013-07-11 03:48:07
add benchmark and tidy up the code a bit
1 parent 88d0fdf
Changed files (2)
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