ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Алгоритмы поиска и сортировки: как выбрать подход для задачи

Автор: · Обновлено

Поиск и сортировка — базовые алгоритмы, с которых начинается серьезное программирование для школьников. Поиск отвечает на вопрос “есть ли нужный элемент и где он находится”, а…

Поиск и сортировка — базовые алгоритмы, с которых начинается серьезное программирование для школьников. Поиск отвечает на вопрос “есть ли нужный элемент и где он находится”, а сортировка упорядочивает данные по правилу.

Самый простой вариант — линейный поиск. Программа просматривает элементы один за другим и останавливается, когда находит нужное значение.

numbers = [8, 3, 15, 6]
target = 15
position = -1

for index, value in enumerate(numbers):
    if value == target:
        position = index
        break

print(position)

Если элемент найден, выводится его индекс. Если нет, остается -1. Такой прием часто используется в задачах на списки, строки, таблицы и анализ результатов.

Поиск минимума и максимума

Поиск максимума — тоже перебор. Важно брать начальное значение из самого списка, а не придумывать “очень маленькое число”.

numbers = [-7, -3, -12]
maximum = numbers[0]

for number in numbers:
    if number > maximum:
        maximum = number

print(maximum)

Если начать с нуля, ответ для списка отрицательных чисел будет неверным.

Зачем нужна сортировка

Сортировка помогает быстро увидеть порядок: минимальные и максимальные значения, медиану, одинаковые элементы, ближайшие результаты. В Python для учебных задач можно использовать sorted(), но полезно понимать идею сортировки выбором.

numbers = [5, 2, 9, 1]

for i in range(len(numbers)):
    min_index = i

    for j in range(i + 1, len(numbers)):
        if numbers[j] < numbers[min_index]:
            min_index = j

    numbers[i], numbers[min_index] = numbers[min_index], numbers[i]

print(numbers)

Сортировка выбором ищет минимальный элемент в неотсортированной части и ставит его на нужное место. Она понятна, но медленна на больших данных. Поэтому в реальных программах обычно используют встроенные сортировки.

Для школьника главное — видеть шаблон. Поиск, максимум, минимум и сортировка строятся вокруг одного действия: перебрать элементы и обновить ответ по правилу.

Практикум: поиск книги и цена сортировки

Дан список инвентарных номеров книг в порядке поступления. Реализуйте линейный поиск, который возвращает первый индекс или -1. Затем создайте отсортированную копию и выполните бинарный поиск, не разрушая исходный порядок. Проверьте первый, последний, повторяющийся и отсутствующий номер. Сравните сценарий одного запроса со сценарием тысячи запросов: во втором случае предварительная сортировка может окупиться, в первом — оказаться лишней. Запишите это решение словами до измерения времени.

Контрольная точка

Почему нельзя применить бинарный поиск непосредственно к исходному неупорядоченному списку? Назовите инвариант, который позволяет на каждом шаге отбрасывать половину диапазона.

Частые вопросы

Какой поиск всегда быстрее?

Безусловного ответа нет. Бинарный поиск быстрее на уже отсортированных данных, но подготовка порядка тоже стоит времени и может изменить смысл позиций. Для маленького списка или одного запроса линейный проход часто проще и достаточен.

Источники