Bubble Sort

Here is the implementation of Bubble sort algorithm in Ruby

class BubbleSort
  def initialize(arr)
    @list = arr
  end

  def sort
    swapped = true
    begin
      swapped = false
      for i in <a href="mailto:[email protected]">0..@list.length-1</a>
        if @list[i+1]
          if @list[i] > @list[i+1]
            @list[i] = @list[i] + @list[i+1]
            @list[i+1] = @list[i] - @list[i+1]
            @list[i] = @list[i] - @list[i+1]
            swapped = true
          end
        end
      end
    end until !swapped
    @list
  end

end

How to use

arr = Array.new(20) { rand(1...9) }
bs = BubbleSort.new(arr)
result = bs.sort

Rspec

describe BubbleSort do

  it "is sorting from least to greatest" do
    arr = Array.new(50) { rand(1...9) }
    bs = BubbleSort.new(arr)
    result = bs.sort
    expect(result).to eq(arr)
  end

  it "has smallest integer at the beginning" do
    arr = Array.new(50) { rand(1...9) }
    bs = BubbleSort.new(arr)
    expect(bs.sort).to start_with 1
  end

end

Insertion Sort

Basic implementation of Insertion Sort

class InsertionSort
  def initialize(arr)
    @list = arr
  end

  def sort
    for i in (<a href="mailto:[email protected]">1..@list.length</a> - 1)
      key = @list[i]
      j = i-1

      # Compare and move elements according to key,
      # to one position ahead
      while j >= 0 && key < @list[j] do
          @list[j+1] = @list[j]
          j = j-1
      end
      @list[j+1] = key
    end
    @list
  end

end

How to use

arr = Array.new(50) { rand(1...9) }
is = InsertionSort.new(arr)
result = is.sort

Rspec

describe InsertionSort do

  it "is sorting from least to greatest" do
    arr = Array.new(50) { rand(1...9) }
    is = InsertionSort.new(arr)
    result = is.sort
    expect(result).to eq(arr)
  end

  it "has smallest integer at the beginning" do
    arr = Array.new(50) { rand(1...9) }
    is = InsertionSort.new(arr)
    expect(is.sort).to start_with 1
  end

end


blog comments powered by Disqus

Share

Published

Tags