Бинарный поиск также называет "писк делением пополам". Попробуем пойти с конца.
- На последнем этапе мы имеем массив из двух элементов, после деления которого получаем решение - найденный нужный элемент или же понимание того, что нужного элемента в массиве нет.
- На предпоследнем этапе мы имеем массив из четырёх элементов, который поделим и получим массив из двух элементов. Или м.б. массив из трёх элементов - тогда этот шаг м.б. предпоследним или последним.
- И так на каждом шаге размер массива удваивается.
Т.о., за k шагов мы можем разделить массив, имеющий 2
**k элементов. Тогда k=log
2(n), т.е. речь идёт о логарифме_по_основанию_два.
Если же n не является степенью двойки - то k=roundup(log
2(n)), т.е. мы округляем дробное число до целого вверх. log
2(100)=6.644, с округлением вверх получаем семь.
Что такое "
логарифм" - программист должен знать. Без этого хороший код писать не получится - будет тупо непонятно описание алгоритмов.
Очень советую почитать книги классиков: Кнут, Вирт и прочие. Там не про современные системы программирования, а именно про алгоритмы - не зависящие ни от архитектуры компьютера, ни от языка программирования. Старые книги хороши тем, что прошли проверку временем. Хотя, конечно, там могут отсутствовать некоторые знания, полученные недавно. Зато там нет (или очень мало) откровенного фуфла, которого много в современных книжках.