Попарный алгоритм
Главная идея — не сравнивать каждый новый элемент и с текущим минимумом, и с текущим максимумом. Сначала элементы разбивают на пары. В каждой паре одним сравнением определяют меньший и больший элементы. После этого меньший элемент может повлиять только на минимум, а больший — только на максимум.
Если \(n\) чётно, первые два элемента сравнивают один раз и используют как начальные минимум и максимум. Остаётся \((n-2)/2\) пар. На каждую такую пару тратят три сравнения: одно внутри пары, одно меньшего элемента с текущим минимумом и одно большего с текущим максимумом. Итого
\(1+3\frac{n-2}{2}=\frac{3n}{2}-2\).1
Если \(n\) нечётно, первый элемент берут одновременно как начальные минимум и максимум. Оставшиеся \(n-1\) элементов образуют \((n-1)/2\) пар, каждая требует три сравнения. Получаем
\(3\frac{n-1}{2}=\left\lceil\frac{3n}{2}\right\rceil-2\).1
Почему меньше сравнений в худшем случае недостаточно
Для нижней оценки достаточно рассмотреть входы с попарно различными элементами. В модели сравнений каждый элемент в начале остаётся кандидатом и на минимум, и на максимум. Чтобы элемент перестал быть кандидатом на максимум, он должен хотя бы один раз проиграть сравнение. Чтобы перестал быть кандидатом на минимум, он должен хотя бы один раз выиграть.
В конце должны остаться ровно один кандидат на максимум и один кандидат на минимум, поэтому нужно устранить всего \(2n-2\) кандидатных статусов. Для строгой нижней оценки используют стратегию противника. Когда сравниваются два элемента, которые ещё сохраняют оба статуса, противник отвечает так, что меньший теряет статус кандидата на максимум, а больший — статус кандидата на минимум. Одним сравнением устраняются два статуса, но после этого оба элемента уже не имеют одновременно двух статусов. Поэтому таких первых «двойных» сравнений может быть не более \(\lfloor n/2\rfloor\). В последующих сравнениях противник выбирает согласованный ответ так, чтобы за одно сравнение устранялся не более чем один ещё нужный кандидатный статус. Например, при сравнении кандидата только на максимум с кандидатом только на минимум первый объявляется большим.
Следовательно, любой алгоритм в худшем случае выполняет не менее
\(\lfloor n/2\rfloor + (2n-2-2\lfloor n/2\rfloor)=2n-2-\lfloor n/2\rfloor=\left\lceil\frac{3n}{2}\right\rceil-2\)
сравнений. Эта нижняя оценка совпадает с числом сравнений попарного алгоритма, поэтому результат оптимален.2
Смысл результата
Асимптотически задача всё равно имеет сложность \(\Theta(n)\), но точный подсчёт сравнений показывает преимущество совместного поиска: вместо почти \(2n\) сравнений достаточно примерно \(1.5n\), и в модели сравнений улучшить этот коэффициент в худшем случае нельзя.