Is it possible to make partition of Quicksort run in O(lg n)? I was thinking maybe I can make it 2T(n/2) + C split the list into two halves and work on them recursively to partition the list.
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.