Step 1: For each group of 8, find the 4th smallest. A*n/8 Step 2: Find the median of those candidates. T(n/8) Step 3: Partition the list around that pivot. n Step 4: In the worst case, our recursion is on the larger side, and that side has as many values as possible. We need to determine how many values are required to partition into the smaller side using the "X"s visualization technique. The "less than" side of the partitioning will have (roughly) at least 1/2 of 4/8 of the values so (4/16)ths. The "greater than" side of the partitioning will have (roughly) at least 1/2 of 5/8 of the values so (5/16)ths. The remaining 7/16 of the values could go on either side. We will assume the adversary will construct things so that the 7/16 goes with the 5/16 and that our recursive call will be on that quantity of 12/16ths of the input, or (3/4)n. T(3n/4) So, the run-time would be: T(n) = An/8 + T(n/8) + n + T(3n/4) * From here, you should be able to prove that this will be a linear run-time using a recursion tree. * Of course you can then use constructive induction to solve for c such that T(n)<=cn.