in-place heap-sort