Скажу сразу, что ответ
Сергей Соколов представляет из себя
крайне медленное по производительности решение и в целом, его
ответ нелогичен и даже ошибочен!
В нём много излишних условий и проверок, которые попросту неверно изначально были им спроектированы логически, что привело к хаосу в его коде.
Он попытался его поправить, используя мой ответ, но, к сожалению, это так и не спасло ситуацию.
Правильно делать так:
/* проверяем все центры */
1. X==A
2. X==B
3. X==C
/* проверяем левую ветку: X<B */
4. X<A
5. else ... //X>A
/* проверяем правую ветку: else */
6. X<C
7. else ... //X>C
При таком подходе затрачиваемое время работы кода на сопоставление X к нужному значению (A,B,C) или диапазону - МИНИМАЛЬНО и ОПТИМАЛЬНО.