Я предложил менее занудный вариант
Он чуть-чуть жульнический (методологически): прибегая к половинному делению, Вы фактически дублируете доказательство принципа компактности.
На самом деле наиболее экономный вариант -- доказывать обе части теоремы Вейерштрасса одновременно. Принцип компактности принимаем за святое. Тогда так.
Пусть

-- супремум значений функции на данном отрезке (случай

заранее не исключается). Выберем такую последовательность точек

отрезка, что

. Согласно принципу компактности, некоторая подпоследовательность этих точек сходится к какой-то точке отрезка:

. Тогда в силу непрерывности функции

, и в то же время

. В частности, это означает, что

, т.е. что функция ограничена сверху. Ч.т.д.