Commit 663d11a

mo khan <mo@mokhan.ca>
2013-07-11 02:32:40
implement simple bubble sort
1 parent 8a77fca
Changed files (2)
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