if you have extra space you can go for merge sort. else you should have to remain happy with the heap sort . intuitively if you see, if an array is sorted we are to swap/assign a lot in merge sort but that's not the case in heap sort.you call heapify(A,i) you are not going to swap once also .
so better go for heap sort.....