main
1require "spec_helper"
2
3describe "Algorithm efficiency" do
4 let(:bubble_sort) { BubbleSort.new }
5 let(:insertion_sort) { InsertionSort.new }
6 let(:merge_sort) { MergeSort.new }
7 let(:quick_sort) { QuickSort.new }
8
9 it "should sort an array of 100 numbers" do
10 run(100)
11 end
12
13 it "should sort an array of 500 numbers" do
14 run(500)
15 end
16
17 it "should sort an array of 1000 numbers" do
18 run(1000)
19 end
20
21 it "should sort an array of 5000 numbers" do
22 run(5000)
23 end
24
25 def run(n)
26 numbers = Array.new(n) { rand(n) }
27 Benchmark.bmbm do |x|
28 x.report("#{n}-bubble") { bubble_sort.sort(numbers) }
29 x.report("#{n}-insertion") { insertion_sort.sort(numbers) }
30 x.report("#{n}-merge") { merge_sort.sort(numbers) }
31 x.report("#{n}-quick") { quick_sort.sort(numbers) }
32 x.report("#{n}-ruby") { numbers.sort }
33 end
34 end
35end