Задача: Бинарный поиск в массиве и его разновидности
Псевдокод: Листинг 4.4. Двоичный поиск: возвращение первого вхождения
  1. l = -1; u = n
  2. while l + 1 != u
  3. /* инвариант: x[l] < t && x[u] >= t && l < u */
  4. m = (l + u) /2
  5. if x[m] < t
  6. l = m
  7. else
  8. u = m
  9.  
  10. /* утверждение: l+1 = u && x[l] < t && x[u] >= t */
  11. p = u
  12. if p >= n || x[p] != t
  13. p = -1
  14.