Well in my comment on quicksort, you know how quicksort works right? It's a recursive sort. It divides the container into two parts, one greater than and one less than a chosen pivot element. (The method by which the pivot is chosen can be critical but no matter how you choose it you could still end up with n squared complexity.) Once it's divided it up, it returns the concatenation of the lesser list, sorted by itself, the pivot and the greater list, sorted by itself.
So if it recurses beyond a certain point, it is no longer more efficient than heapsort, which is generally slower but has a worst time of nlogn. Heapsort works by heapifying the data (a heap is a storage container, check Wikipedia for more on that).
However I'm not sure how all algorithms work. Sorting algorithms are the most hotly debated because there are so many of them. That's why I presume that's what your question relates to. As I said, introsort is a hybrid algorithm that uses quicksort until it sees a point of recursion beyond which heapsort is just more efficient.
It depends on the data, yeah. In sort algorithms the ordering of the data and, in quicksort, the location of the pivot are critical to the speed at which the data is sorted. At the same time it also depends on the way the algorithm works.
In general quicksort is the best algorithm. It's not common that heapsort will be faster on matching sets of data. The method by which the pivot is determined is still debatable but I believe there is a preferred method for that as well.
EDIT: If you are really interested in sorting algorithms, someone on this site pointed me to this:
http://www.sorting-algorithms.com/
It's great and it has pseudocode plus animations for tons of common sort algos on various sets (reverse, nearly sorted, random, few unique).