Which algorithm guarantees finding the median (the n/2n/2n/2-th order statistic) of an array of nnn elements in O(n)O(n)O(n) worst-case time?