Задача: Бинарный поиск в массиве и его разновидности
Исходник: Алгоритм бинарного поиска, язык: java [code #795, hits: 536]
автор: this [добавлен: 10.12.2021]
  1. private static int binSearchFirst(final int key, final int[] arr) {
  2. int lo = 0, hi = arr.length - 1;
  3. while (lo <= hi) {
  4. var mid = lo + (hi - lo) / 2;
  5.  
  6. if (key > arr[mid]) {
  7. lo = mid + 1;
  8. } else if (key < arr[mid]
  9. || (mid > 0 && arr[mid - 1] == key)) {
  10.  
  11. hi = mid - 1;
  12. } else {
  13. return mid;
  14. }
  15. }
  16. return -1;
  17. }
Бинарный поиск java реализация, классическое решение за lg N шагов находим крайний слева элемент в массиве совпадающий с искомым, т.е. если искомый элемент повторяется - находим самое первое вхождение элемента.
Тестировалось на: java-11-openjdk-amd64 @ubuntu20LTS

+добавить реализацию