Is it possible to make partition of Quicksort run in O(lg n)?
No.  The partition operation must access every item in the list: if there is any item it does not look at, then you don't know which side of the partition it belongs on.  Consequently, the partition operation cannot run any faster than $O(n)$ time, where $n$ is the length of the list.