# Shellsort algorithm, # see examples in test/shell_sort_test.rb module Shell def self.sort(array) gap = 1 gap = 3 * gap + 1 while gap < array.size / 3 while gap > 0 gap.upto(array.size - 1) do |i| j = i while j > 0 && array[j] < array[j - gap] array[j], array[j - gap] = array[j - gap], array[j] j -= gap end end gap /= 3 end array end end