TheAlgorithms-Ruby/sorting/bucket_sort.rb

29 lines
559 B
Ruby
Raw Normal View History

2021-02-07 08:05:54 +01:00
DEFAULT_BUCKET_SIZE = 5
def bucket_sort(array, bucket_size = DEFAULT_BUCKET_SIZE)
2021-02-07 08:05:54 +01:00
bucket_count = ((array.max - array.min) / bucket_size).floor + 1
# create buckets
buckets = []
bucket_count.times { buckets.push [] }
# fill buckets
array.each do |item|
buckets[((item - array.min) / bucket_size).floor].push(item)
end
# sort buckets
buckets.each do |bucket|
bucket.sort!
end
buckets.flatten
2021-02-07 08:05:54 +01:00
end
2021-02-13 19:43:56 +01:00
if $0 == __FILE__
puts 'Enter a list of numbers separated by space'
list = gets.split.map(&:to_i)
p bucket_sort(list)
end