Sorting in Ruby
24 September 2017 By Bhavyanshu Parasher
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