summaryrefslogtreecommitdiff
path: root/spec/sorting/efficiency_spec.rb
blob: 86505fd02d6e702f775498b063a351ff461f11fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
require "spec_helper"

describe "Algorithm efficiency" do
  let(:bubble_sort) { BubbleSort.new }
  let(:insertion_sort) { InsertionSort.new }
  let(:merge_sort) { MergeSort.new }
  let(:quick_sort) { QuickSort.new }

  it "should sort an array of 100 numbers" do
    run(100)
  end

  it "should sort an array of 500 numbers" do
    run(500)
  end

  it "should sort an array of 1000 numbers" do
    run(1000)
  end

  it "should sort an array of 5000 numbers" do
    run(5000)
  end

  def run(n)
    numbers = Array.new(n) { rand(n) }
    Benchmark.bmbm do |x|
      x.report("#{n}-bubble") { bubble_sort.sort(numbers) }
      x.report("#{n}-insertion") { insertion_sort.sort(numbers) }
      x.report("#{n}-merge") { merge_sort.sort(numbers) }
      x.report("#{n}-quick") { quick_sort.sort(numbers) }
      x.report("#{n}-ruby") { numbers.sort }
    end
  end
end