def build_heap(arr)
(arr.length / 2 - 1).downto(0) do |i|
sift_down(arr, i)
end
arr
end
def heap_sort(arr)
build_heap(arr)
result =[]
(arr.length - 1).downto(0) do |i|
arr[0], arr[i] = arr[i], arr[0]
result.push(arr.pop)
sift_down(arr, 0)
end
result
end
若干汚いけど、許す