Алгоритмы. С примерами на Python
В приложении удобнееQR для скачивания приложенияRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

Цитаты из книги  Алгоритмы. С примерами на Python

http://github.com/heineman/LearningAlgorithms.
5 Нравится
Комментировать
программах используются три свободно распространяемые библиотеки Python, которые необходимо скачать и установить самостоятельно2: • NumPy (https://www.numpy.org) версии 1.19.5; • SciPy (https://www.scipy.org) версии 1.6.0; • NetworkX (https://networkx.org) версии 2.5. NumPy и SciPy — одни из самых популярных свободных библиотек с огромным сообществом. Я их использую, чтобы измерить фактическую производительность алгоритмов. NetworkX — большой сборник эффективных алгоритмов для работы с графами,
2 Нравится
Комментировать
Встроенные же функции, например max(), — часть самого интерпретатора: пока такая функция обрабатывает объект, не нужно ничего дополнительно интерпретировать. Поэтому встроенные функции всегда быстрее тех, что написаны на Python8. Следует заметить, что во всех случаях реализация одного и того же алгоритма должна приводить к одинаковому изменению быстродействия при изменении размера данных — например, при удвоении N время работы и largest(), и max() тоже удваивается как в наихудшем, так и в наилучшем случае.
1 Нравится
Комментировать
http://github.com/heineman/LearningAlgorithms
Комментировать
Это одна из самых старых и самых надежных структур данных
Комментировать
Когда придумываешь алгоритм, важнее всего убедиться, что он работает правильно на всех допустимых наборах входных данных
Комментировать
Алгоритм нахождения медианы в неупорядоченном списке за линейное время
Комментировать
Довольно медленные функции — определители палиндрома
Комментировать
Пример 1.3. Другой способ найти наибольшее значение в списке A def alternate(A): for v in A: ❶ for x in A: if v < x: ❷ break else: return v ❸ return None ❹ ❶ Для каждого v из A рассмотрим все x из A и сравним их. ❷ Если v меньше какого-то x, можно больше не сравнивать: это не максимум. ❸ Если мы просмотрели все x, так ни разу и не выполнив break, значит, v — это максимум и его можно уже возвращать. ❹ До этого места выполнение дойдет только при пустом A. В таком случае вернем специальный объект Python — None.
Комментировать
Пример 1.2. Правильная функция, которая находит наибольшее значение в списке def largest(A): my_max = A[0] ❶ for idx in range(1, len(A)): ❷ if my_max < A[idx]: my_max = A[idx] ❸ return my_max ❶ Сделаем my_max равным начальному элементу списка (он доступен по индексу 0). ❷ Переменная idx принимает целочисленные значения от 1 до len(A)-1 включительно, не достигая len(A). ❸ Если в A по индексу idx стоит большее значение, обновить my_max.
Комментировать