8
$\begingroup$

you have 32 numbers. What is the least number of comparison needed to find the 2nd smallest out of them.

As per me it 61 comparsisons are required. Compare first two number in list. Assign largest and second largest to them based on comparison. Now compare rest 30 numbers with two of them and assign largest and second largest based on comparison. So for rest of 30 numbers we have to do 2 comparison for each number . this answer is 30*2 + 1 = 61. Can 61 be reduced?

$\endgroup$
9
$\begingroup$

I happen to remember this one from my algorithms class. Take your list of 32 numbers and try to find the smallest number. Compare the first and second numbers, the third and fourth, etc. until you reduce the list by half and repeat. It will take 31 comparisons to find the smallest number as each comparison eliminates one possibility.

Once this has been complete, make a list of the numbers the smallest number has been compared to. There should be 5. It will take 4 comparisons to find the smallest of these 5 numbers, for a total of 35 comparisons.

$\endgroup$
  • $\begingroup$ Near-simulpost! You were 10 seconds after me (by my clock) with the same algorithm and answer. :) $\endgroup$ – Charles Apr 27 '14 at 5:41
  • $\begingroup$ @Charles Yep, it happens. Did you really just upvote your own answer by the way? I saw it as posted 7 seconds ago and it already had an upvote. $\endgroup$ – Mike Apr 27 '14 at 5:42
  • $\begingroup$ Not me, must have been someone else. I'll give you +1, though -- I can't fault your answer, of course. $\endgroup$ – Charles Apr 27 '14 at 5:44
  • $\begingroup$ @Charles Strange. Ah well, +1 to yours as well. $\endgroup$ – Mike Apr 27 '14 at 5:55
  • $\begingroup$ @Mike one can't upvote one's post :-) by the way I think it will help if you explain why the smallest element will be compared only to $5$ other numbers. (I know it's $\log_2 32$ though :-P) $\endgroup$ – Ant Apr 27 '14 at 15:32
8
$\begingroup$

35 comparisons are optimal. Pair off the numbers and test them against each other. Take the winners, the winners' winners, and so forth to find the maximal element; this takes 31 comparisons in all. Now the maximal element was compared against five other elements, and the second-largest element is precisely the largest of these five. You can find it in four comparisons, for a total of 35 comparisons.

$\endgroup$
  • $\begingroup$ Should that last sentence read "... for a total of $35$ comparisons."? $\endgroup$ – John Bentin Apr 27 '14 at 5:44
  • $\begingroup$ @JohnBentin: Good call, I fixed the typo. $\endgroup$ – Charles Apr 27 '14 at 5:45
  • 3
    $\begingroup$ How do you prove that 35 is optimal? $\endgroup$ – bof Apr 27 '14 at 9:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.