Commit 663d11a
Changed files (2)
lib
spec
lib/bubble_sort.rb
@@ -1,5 +1,18 @@
class BubbleSort
def sort(items)
+ return items if items.size <= 1
+
+ swapped = false
+ loop do
+ items.size.times do |n|
+ if (items[n] <=> items[n+1]) == 1
+ items[n], items[n+1] = items[n+1], items[n]
+ swapped = true
+ end
+ end
+ break unless swapped
+ swapped = false
+ end
items
end
end
spec/bubble_sort_spec.rb
@@ -10,4 +10,10 @@ describe BubbleSort do
it "should be able to sort an array with one item" do
sut.sort([1]).should == [1]
end
+
+ it "should be able to sort an array of numbers" do
+ n = 6
+ numbers = Array.new(n) { rand(n) }
+ sut.sort(numbers).should == numbers.sort
+ end
end