赞
踩
冒泡排序是一种简单直观的排序算法,通过比较相邻元素并交换位置,逐步将最大(或最小)元素“冒泡”到数组一端。
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
快速排序采用分治策略,选择一个基准值,将比它小的数放在左边,比它大的数放在右边,然后递归对左右子序列进行快速排序。
def quick_sort(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 quick_sort(left) + middle + quick_sort(right)
线性搜索从数组的第一个元素开始逐个查找目标值,直到找到目标或者遍历完所有元素。
def linear_search(arr, target):
for index, value in enumerate(arr):
if value == target:
return index
return -1 # 若未找到返回-1
二分搜索适用于已排序的数组,每次将搜索范围减半,直至找到目标值或搜索区间为空。
def binary_search(arr, target): low = 0 high = len(arr) - 1 while low <= high: mid = (low + high) // 2 guess = arr[mid] if guess == target: return mid if guess > target: high = mid - 1 else: low = mid + 1 return -1
斐波那契数列是动态规划问题的经典实例,利用记忆化技术避免重复计算。
def fibonacci(n, memo={}):
if n <= 0:
return 0
elif n == 1:
return 1
elif n not in memo:
memo[n] = fibonacci(n - 1) + fibonacci(n - 2)
return memo[n]
深度优先搜索在处理树和图结构时非常有效,用于遍历节点的所有路径。
def dfs(graph, node, visited=None):
if visited is None:
visited = set()
visited.add(node)
print(node)
for neighbor in graph[node]:
if neighbor not in visited:
dfs(graph, neighbor, visited)
# 假设graph是一个邻接列表表示的图结构
dfs(graph, 'A')
Dijkstra算法用于解决单源最短路径问题,不断更新从起始点到各个顶点的最短距离。
import heapq def dijkstra(graph, start): distances = {node: float('infinity') for node in graph} distances[start] = 0 pq = [(0, start)] while pq: current_distance, current_node = heapq.heappop(pq) if current_distance > distances[current_node]: continue for neighbor, weight in graph[current_node].items(): distance = current_distance + weight if distance < distances[neighbor]: distances[neighbor] = distance heapq.heappush(pq, (distance, neighbor)) return distances
以上只是程序员常用的几种基础算法之一部分,实际编程中还有诸如贪心算法、回溯算法、哈希算法、分治算法等众多算法类别,每种算法都有其应用场景和独特优势。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。