Skip to content

Instantly share code, notes, and snippets.

@gabteles
Last active August 29, 2015 14:23
Show Gist options
  • Save gabteles/a6d6f7ea3329a52c73e3 to your computer and use it in GitHub Desktop.
Save gabteles/a6d6f7ea3329a52c73e3 to your computer and use it in GitHub Desktop.
Combsort in Ruby
class Array
def combsort!(shrink = 1.247330950103979)
gap = size
swapped = false
until gap == 1 and !swapped
gap = (gap / shrink).to_i
gap = 1 if gap < 1
i = 0
swapped = false
until i + gap >= size
if at(i) > at(i+gap)
self[i], self[i+gap] = self[i+gap], self[i]
swapped = true
end
i += 1
end
end
return self
end
def combsort(shrink = 1.247330950103979)
dup.combsort!(shrink)
end
end
if (__FILE__ == $0)
s = 100
testArray = Array.new(s){|i| rand(s) }
correctSort = testArray.sort
puts "Sorting: #{testArray}"
resultArray = testArray.combsort
puts "Result: #{resultArray}"
puts "Correct? #{resultArray == correctSort ? 'Yes' : 'No'}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment