O(logn) space is that of the stack. Since quick sort is recursive, implicit stack is bound to be there for function calls. However, explicit memory is not needed, unlike in merge sort, which uses an explicit array to sort numbers. Hence, it is in-place.