add another heap sort implementation