TheAlgorithms-Ruby/sorting/cocktail_sort.rb

28 lines
520 B
Ruby
Raw Normal View History

2021-05-06 09:13:25 +02:00
def cocktail_sort(array)
start = 0
finish = array.length - 1
way = 1
loop do
swapped = false
start.step(finish - way, way) do |i|
if (array[i] <=> array[i + way]) == way
array[i], array[i + way] = array[i + way], array[i]
swapped = i
end
end
break unless swapped
2021-09-03 22:24:58 +02:00
finish = start
start = swapped
way = -way
2021-05-06 09:13:25 +02:00
end
array
end
if $0 == __FILE__
puts 'Enter a list of numbers separated by space'
list = gets.split.map(&:to_i)
p cocktail_sort(list)
end