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