I think one of the main reasons why Quick Sort is cache-friendly. When QS processes a segment of an array, it accesses elements at the beginning and end of the segment, and moves towards the center of the segment.
So, when you start, you access the first element in the array and a piece of memory (“location”) is loaded into the cache. And when you try to access the second element, it's (most likely) already in the cache, so it's very fast.
Other algorithms like heapsort don't work like this, they jump in the array a lot, which makes them slower.