Selection problem on the union of two ordered dictionaries
The following algorithm uses the divide-and-conquer technique. In the course of divide-and-conquer, the lengths of both sorted arrays $S$ and $T$ will change. We denote the length of $S$ (or, $T$) by $len(S)$ (or $len(T)$) at any time. Notice that I only summarize the algorithm and have intentionally omitted the tricky things about indexes (e.g., taking floor or ceiling).

Notations and Basic Idea:

At any iteration, denote the median index of $S$ by $s_m \triangleq len(S) /2$ and the median of $S$ by $S[s_m]$. 
Similarly, denote the median index of $T$ by $t_m \triangleq len(T) / 2$ and the median of $T$ by $T[t_m]$. 


  The basic idea is as follows: we compare $s_m + t_m$ with $k$ and $S[s_m]$ with $T[t_m]$ to determine which (left or right) half part of which array ($S$ or $T$) can be discarded and then we can leave the smaller sub-problem to recursion.


Algorithm:


Case 1 ($s_m + t_m \geq k$):

1.1 Case 1.1 $S[s_m] \geq T[t_m]$. 

We can discard the right bigger half of array $S$ (i.e., from $S[s_m]$ to its end). Then recursively find the $k$-th smallest element in $T$ and the left smaller half of $S$.

1.2 Case 1.2 $T[t_m] &gt; S[s_m]$. 

It is exactly symmetric with Case 1.1, with $T$ and $S$ exchanged. 
Case 2 ($s_m + t_m &lt; k$):

2.1 Case 2.1 $S[s_m] \geq T[t_m]$.

We can discard the left smaller half of array $T$. Then recursively find the $(k - t_m)$-th smallest element in $S$ and the right larger half of $S$.

2.2 Case 2.2 $T[t_m] &gt; S[s_m]$.

It is exactly symmetric with Case 1.1, with $T$ and $S$ exchanged. 


Time Complexity:

At each iteration, we discard a half of some array. So the time complexity is $O(\lg (len(S)) + \lg (len(T)))$, which is $O(\lg n)$ for input arrays $S$ and $T$ of size $n$.

References:


How to find the kth smallest element in the union of two sorted arrays?
Finding kth smallest number from n sorted arrays A generalization to multiple sorted arrays.