Skip to content

Commit 5957a1b

Browse files
committed
Refactor code
* Use Rspec shared examples for sorting specs. * Fix the insertion sort duplicate loop.
1 parent f8350b2 commit 5957a1b

File tree

5 files changed

+24
-29
lines changed

5 files changed

+24
-29
lines changed

lib/Algorithm-Sorting/bubble_sort.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class << self
88
# count: Counter to terminate recursion starts from 1
99
# swap: Optimise algoritm to check if array is already sorted.
1010
#
11-
def recursive(values, count, swap)
11+
def recursive(values, count=1, swap=false)
1212
len = values.size
1313
if(!swap && len > 0 && count <= len)
1414
i = 0

lib/Algorithm-Sorting/insertion_sort.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class InsertionSort
22
class << self
33
# Sort using recursion
4-
def recursive(values, i=0)
4+
def recursive(values, i=1)
55
return values if i >= values.size
66

77
(0...i).each do |j|
@@ -13,7 +13,7 @@ def recursive(values, i=0)
1313
# Sort using loop
1414
def non_recursive(values)
1515
n = values.size
16-
(0...n).each do |i|
16+
(1...n).each do |i|
1717
(0...i).each do |j|
1818
if(values[i] < values[j])
1919
values[j], values[i] = values[i], values[j]
Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,5 @@
1-
describe BubbleSort do
2-
let(:values) { [5,2,4,7,1,3,6] }
3-
4-
describe '#recursive' do
5-
it 'sort using recursive technique' do
6-
expect(described_class.recursive(values, 1, false)).to eq([1,2,3,4,5,6,7])
7-
end
8-
end
1+
require_relative './shared_example.rb'
92

10-
describe '#non_recursive' do
11-
it 'sort using non-recursive technique' do
12-
expect(described_class.non_recursive(values)).to eq([1,2,3,4,5,6,7])
13-
end
14-
end
3+
describe BubbleSort do
4+
include_examples "sorting"
155
end
Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,5 @@
1-
describe InsertionSort do
2-
let(:values) { [5,2,4,7,1,3,6] }
3-
4-
describe '#recursive' do
5-
it 'sort using recursive technique' do
6-
expect(described_class.recursive(values)).to eq([1,2,3,4,5,6,7])
7-
end
8-
end
1+
require_relative './shared_example.rb'
92

10-
describe '#non_recursive' do
11-
it 'sort using non-recursive technique' do
12-
expect(described_class.non_recursive(values)).to eq([1,2,3,4,5,6,7])
13-
end
14-
end
3+
describe InsertionSort do
4+
include_examples "sorting"
155
end
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
shared_examples "sorting" do
2+
let(:values) { [5,2,4,7,1,3,6] }
3+
4+
describe '#recursive' do
5+
it 'sort using recursive technique' do
6+
expect(described_class.recursive(values)).to eq([1,2,3,4,5,6,7])
7+
end
8+
end
9+
10+
describe '#non_recursive' do
11+
it 'sort using non-recursive technique' do
12+
expect(described_class.non_recursive(values)).to eq([1,2,3,4,5,6,7])
13+
end
14+
end
15+
end

0 commit comments

Comments
 (0)