Skip to content

Instantly share code, notes, and snippets.

@dmgarland
Created June 5, 2013 14:38
Show Gist options
  • Select an option

  • Save dmgarland/5714332 to your computer and use it in GitHub Desktop.

Select an option

Save dmgarland/5714332 to your computer and use it in GitHub Desktop.
An insertion sort solution
class Array
def insertion_sort(list = self)
sorted = [self.delete_at(0)]
self.each_with_index do |i, p|
if i < sorted.last
sorted.each_with_index do |j, k|
if sorted[k] >= i
already_sorted = sorted.slice(0, k - 1)
to_shift = sorted.slice(k + 1, sorted.size)
sorted = already_sorted + [i] + to_shift
break
end
end
end
end
sorted
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment