文章目录
Python是一种强大且易于学习的编程语言,非常适合实现各种基础算法。以下是10个Python基础算法的示例:
1. 冒泡排序(Bubble Sort)
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
2. 二分查找(Binary Search)
二分查找是一种在有序数组中查找某一特定元素的搜索算法。
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
return -1
3. 斐波那契数列(Fibonacci Sequence)
斐波那契数列是这样一个数列:0、1、1、2、3、5、8、13、21、34…,从第三个数开始,每一个数都是前两个数的和。
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
4. 阶乘(Factorial)
阶乘是所有小于及等于该数的正整数的积。
def factorial(n):
result = 1
for i in range(2, n + 1):
result *= i
return result
5. 求最大公约数(Greatest Common Divisor, GCD)
最大公约数是两个或多个整数共有约数中最大的一个。
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
下滑继续查看方法
## 6. **求最小公倍数(Least Common Multiple, LCM)**两个数的乘积等于这两个数的最大公约数和最小公倍数的乘积。
def lcm(a, b):
return (a * b) // gcd(a, b)
7. 线性搜索(Linear Search)
线性搜索是一种非常基础的搜索算法,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一个元素为止。
def linear_search(arr, x):
for i in range(len(arr)):
if arr[i] == x:
return i
return -1
8. 插入排序(Insertion Sort)
插入排序的工作方式是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
9. 选择排序(Selection Sort)
选择排序首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
10. 快速排序(Quick Sort)
快速排序的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序。
以下是快速排序的Python实现:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
这些只是Python基础算法的一部分,实际上还有很多其他的基础算法,如堆排序、归并排序、狄杰斯特拉算法(Dijkstra’s Algorithm)用于解决最短路径问题、K-最近邻算法(K-Nearest Neighbors,KNN)用于分类问题等。这些算法在解决实际问题时都有广泛的应用。
虽然这些算法在理论学习和教学中非常重要,但在实际应用中,通常会使用更高级的算法库(如Python的numpy
、scipy
、pandas
等)或专门的优化算法来解决特定问题,因为这些库和算法通常经过高度优化,能够提供更高效和稳定的性能。