Which one gives better constant factors between heap sort and quick sort?

Heap Sort has complexity $\mathcal{O}(n\lg(n))$ and Quick Sort with some tuning (choosing the pivot in a random order) on average also sorts in $\mathcal{O}(n\lg(n))$ and both of these are tight upper bounds.

1) So between the two algorithms which one should be used and why? Which one has smaller constant factors?

2) I know quick sort sorts in place . What about memory requirements for Heap sort?

-
Have you tried the Google? –  ladaghini Aug 10 '12 at 19:43
You might find that the wiki articles on heapsort and quicksort answer your questions. –  JSchlather Aug 10 '12 at 19:43
This is hard to answer because you are getting into implementation details, and input characterization. I believe the general opinion is that quicksort is generally better, but has potential for significant slowdown. Regarding memory, I do not know, but keep in mind that quicksort is typically recursive. –  copper.hat Aug 11 '12 at 19:55
@copper.hat Please see my first comment to Henning Makholm . The way I see it is that heap sort is also recursive indirectly . Am I missing some thing ? –  Geek Aug 11 '12 at 19:58
You are not missing anything. Some implementations of heapsort use tail recursion, but it is unnecessary, and can be removed. I would presume that most compilers optimize for tail recursion. –  copper.hat Aug 11 '12 at 20:05
The constant factors are very dependent on implementation details and hardware characteristics, especially on the performance parameters of the memory hierarchy. Most importantly, heapsort has rather dismal memory access patterns, so on a real computer it will typically lose to quicksort for large $n$s independently of any mathematical analysis that counts primitive operations and assume they all cost the same.