add heap sort and tests