Встречается на собеседованиях • сегодня

Какие знаешь алгоритмы поиска по массиву

Линейный поиск (O(n)) - последовательно проверяем каждый элемент:

java
int linearSearch(int[] arr, int key) {
    for(int i = 0; i < arr.length; i++) {
        if(arr[i] == key) return i;
    }
    return -1;
}

Бинарный поиск (O(log n)) - работает только на отсортированных массивах:

java
int binarySearch(int[] arr, int key) {
    int left = 0, right = arr.length - 1;
    while(left <= right) {
        int mid = left + (right - left) / 2;
        if(arr[mid] == key) return mid;
        if(arr[mid] < key) left = mid + 1;
        else right = mid - 1;
    }
    return -1;
}

Также существуют:

  • Интерполяционный поиск (O(log log n) в лучшем случае)
  • Поиск Фибоначчи (оптимизация бинарного)
  • Jump Search (прыжками по блокам)

Для коллекций в Java есть Collections.binarySearch() и Arrays.binarySearch().

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы