summaryrefslogtreecommitdiff
path: root/lib/sorting/bubble_sort.rb
blob: bb4fbe831eb16c26dbcbba7741bf20b02fd4199f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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