I like merge sort. Average time may be worse, but it's upper bound is better and it is conceptually cleaner and easier to understand (IMO).
In place merge sort exists. It's hard to write tho
https://sites.google.com/site/algoxy/home/elementary-algorit...