GitHub 标星 15 万:使用 Python 实现常见算法详解
掌握了 Python 基础知识后,进阶学习算法是提升编程能力的必经之路。编程语言只是工具,数据结构与算法才是核心灵魂。本文介绍一个在 GitHub 上非常受欢迎的 Python 算法入门项目,从原理到代码实现,帮助开发者系统理解各类算法。
项目简介
该项目名为 TheAlgorithms/Python,是一个社区维护的开源仓库,旨在提供多种算法的 Python 实现。它涵盖了从基础排序、搜索到机器学习、加密等多个领域。对于新手而言,这是一个极佳的学习资源,不仅包含代码,还配有原理讲解和可视化动图(部分)。
项目地址: https://github.com/TheAlgorithms/Python
排序算法
排序算法是算法学习的基础。以下介绍几种常见的排序算法及其 Python 实现。
冒泡排序 (Bubble Sort)
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
def bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
if not swapped:
break
return arr
归并排序 (Merge Sort)
归并排序是采用分治法的一个非常典型的应用。它将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) //
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
merge(left, right)
():
result = []
i = j =
i < (left) j < (right):
left[i] <= right[j]:
result.append(left[i])
i +=
:
result.append(right[j])
j +=
result.extend(left[i:])
result.extend(right[j:])
result


