Kitobdan iqtiboslar  Алгоритмы. С примерами на Python

http://github.com/heineman/LearningAlgorithms.
5 kishiga yoqdi
Fikr bildirish
программах используются три свободно распространяемые библиотеки 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 kishiga yoqdi
Fikr bildirish
Встроенные же функции, например max(), — часть самого интерпретатора: пока такая функция обрабатывает объект, не нужно ничего дополнительно интерпретировать. Поэтому встроенные функции всегда быстрее тех, что написаны на Python8. Следует заметить, что во всех случаях реализация одного и того же алгоритма должна приводить к одинаковому изменению быстродействия при изменении размера данных — например, при удвоении N время работы и largest(), и max() тоже удваивается как в наихудшем, так и в наилучшем случае.
1 kishiga yoqdi
Fikr bildirish
http://github.com/heineman/LearningAlgorithms
Fikr bildirish
Anto Subo
Anto Suboiqtibos olmoqda3 hafta oldin
Это одна из самых старых и самых надежных структур данных
Fikr bildirish
Anto Subo
Anto Suboiqtibos olmoqda3 hafta oldin
Когда придумываешь алгоритм, важнее всего убедиться, что он работает правильно на всех допустимых наборах входных данных
Fikr bildirish
Алгоритм нахождения медианы в неупорядоченном списке за линейное время
Fikr bildirish
Довольно медленные функции — определители палиндрома
Fikr bildirish
Пример 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.
Fikr bildirish
Пример 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.
Fikr bildirish