Балансировка логического древа
Если отвлечься от устоявшейся идиомы "оператор SWITCH дает специальный способ выбора одного из многих вариантов, который заключается в проверке совпадения значения данного выражения с одной из заданных констант в соответствующем ветвлении", легко показать, что switch представляет собой завуалированный оператор поиска соответствующего case-значения.
Последовательный перебор всех вариантов, соответствующий тривиальному линейному поиску— занятие порочное и крайне неэффективное. Допустим, наш оператор switch выглядит так:
switch (a)
{
case
98 : /* код обработчика */ break;
case
4 : /* код обработчика */ break;
case
3 : /* код обработчика */ break;
case
9 : /* код обработчика */ break;
case
22 : /* код обработчика */ break;
case
0 : /* код обработчика */ break;
case
11 : /* код обработчика */ break;
case
666: /* код обработчика */ break;
case
96 : /* код обработчика */ break;
case
777: /* код обработчика */ break;
case
7 : /* код обработчика */ break;
}