Линейный поиск подразумевает последовательный перебор всех элементов списка.
После обнаружения наилучшего значения выполняются действия, зависящие от условия задачи:
остановка обхода списка - “найти индекс первого элемента, который…”;
изменение значения переменной - “найти мин./макс. значение”, “определить есть ли …”, “посчитать количество …”;
вывод элемента на экран - “вывести все элементы, которые …”.
Если по условию задачи не нужно искать индекс подходящих элементов:
Результат:
Бинарный поиск работает только для отсортированных списков.
Найдём в списке значение равное \(key\). Пусть \(mid\) - индекс элемента в середине, \(K_{mid}\) - значение элемента в середине списка:






Задача алгоритма сортировки - расположить элементы массива таким образом, чтобы определённое отношение выполнялось для любой пары соседних элементов.
a[i] < a[i+1]длина a[i] < длина a[i+1]алфавитный порядок






Возможны две оптимизации:
n-1 сравнениеn-2 сравнений






На каждом проходе алгоритма ищем минимальное значение в неотсортированной части массива и ставим его на текущую позицию.







В языке Python есть встроенная функция для сортировки последовательностей - sorted().
Функция может принимать в качестве аргумента любую последовательность и возвращает список отсортированных элементов.
Кроме последовательности, функция sorted() может принимать аргумент с именем key - функцию-ключ.
Функция применяется к каждому элементу последовательности перед началом сортировки.
Названия групп в электронном расписании сортируются в лексикографическом порядке. Организовать сортировку групп по году поступления.
Используем функцию в качестве ключа сортировки:
Хэш таблица хранит каждое значение под уникальным ключом.
Компоненты:
Задача - сохранить отметку за экзамен с привязкой к имени студента.






Словарь – это набор ключей и соответствующих им значений.
Данные в словаре не упорядочены.
В Python словарю соответствует тип dict.
Квадратные скобки [] позволяют добавить и получить значение из словаря.
Ключами в словаре могут быть значению любого неизменяемого типа: int, float, str.
# целочисленный ключ, строковое значение
num_names={1:"Один", 2: "Два", 3:"Три"}
# вещественный ключ, строковое значение
dec_names={1.5:"Одна целая, пять десятых", 2.5: "Два с половиной"}
# строковый ключ, целочисленное значение
roman_nums = {'I':1, 'II':2, 'III':3, 'IV':4, 'V':5}
# строковый ключ, значение - список
shop = {'фрукты': ['ананас', 'банан'], 'овощи': ['огурец', 'капуста']}shop["фрукты"][1]?
dictdict
| Метод | Значение |
|---|---|
<словарь>.get(<ключ>)<словарь>.get(<ключ>, <значение>) |
Если в словаре есть <ключ> - получить его значение, иначе вернуть <значение> |
<словарь_1>.update(<словарь_2>) |
Обновить содержимое <словарь_1> парами ключ-значение из <словарь_2> |
<словарь>.keys() |
Получить список ключей |
<словарь>.values() |
Получить список значений |
Пользователь вводит с клавиатуры строку с текстом. Программа должна подсчитать, сколько раз в тексте встречается каждое из слов. Слова в тексте разделяются пробелом.