Answer is Quick Sort. (That is why it's name is Quick I guess :D )
The worst case time complexity is O(n square) but worst case is very less likely to happen.
So in most of the cases it is going to take O(nlogn)..
Now mergesort also takes O(nlogn).... but the actual time taken for quicksort is less than merge & heapsort. ( The constant for quicksort is less than mergesort).
In a program, I took 5 lakh random elements in the range 0-100 , it took more time than mergesort.
But I modified it & took 5 lakh elements in the range 0-5lakh .. i.e randomness was more & less repeated elements.
It took almost equal or less than mergesort.
Prefer bubble or insertion sort only when they are nearly sorted. (Do not prefer quicksort, quicksort will take huge time, worst case happens in quicksort when they are already or reversely sorted)