当然可以,以下是一些经典算法的伪代码(伪算法),这些算法广泛用于刷题、面试和工程中。每一个都写得尽量通俗易懂,便于记忆与实现。
🔢 1. 二分查找(Binary Search)
BinarySearch(array, target):
left ← 0
right ← array.length - 1
while left ≤ right:
mid ← (left + right) / 2
if array[mid] == target:
return mid
else if array[mid] < target:
left ← mid + 1
else:
right ← mid - 1
return -1 // not found
🔁 2. 快速排序(Quick Sort)
QuickSort(array, low, high):
if low < high:
pivotIndex ← Partition(array, low, high)
QuickSort(array, low, pivotIndex - 1)
QuickSort(array, pivotIndex + 1, high)
Partition(array, low, high):
pivot ← array[high]
i ← low - 1
for j ← low to high - 1:
if array[j] ≤ pivot:
i ← i + 1
swap(array[i], array[j])
swap(array[i + 1], array[high])
return i + 1
🔍 3. 深度优先搜索(DFS)
DFS(node, visited):
mark node as visited
for each neighbor of node:
if neighbor not visited:
DFS(neighbor, visited)
🔍 4. 广度优先搜索(BFS)
BFS(start):
queue ← empty queue
visited ← empty set
enqueue start
mark start as visited
while queue not empty:
node ← dequeue
for each neighbor of node:
if neighbor not visited:
enqueue neighbor
mark neighbor as visited
💰 5. 贪心算法(Greedy - 分发饼干)
GreedyCookie(children, cookies):
sort children
sort cookies
i ← 0, j ← 0
while i < children.length and j < cookies.length:
if cookies[j] ≥ children[i]:
i ← i + 1
j ← j + 1
return i // 满足的孩子数
🧠 6. Dijkstra 最短路径算法(图论)
Dijkstra(graph, source):
distance[source] ← 0
for each node ≠ source:
distance[node] ← ∞
visited ← empty set
while there are unvisited nodes:
u ← node with smallest distance not in visited
add u to visited
for each neighbor v of u:
alt ← distance[u] + weight(u, v)
if alt < distance[v]:
distance[v] ← alt
🧩 7. 动态规划(0-1 背包问题)
Knapsack(weights, values, capacity):
n ← number of items
dp[0..n][0..capacity] ← 0
for i from 1 to n:
for w from 0 to capacity:
if weights[i-1] > w:
dp[i][w] ← dp[i-1][w]
else:
dp[i][w] ← max(dp[i-1][w], dp[i-1][w - weights[i-1]] + values[i-1])
return dp[n][capacity]
需要我把某一段转成 Python/C++/Java 实现,或者加图示/动画讲解,也可以告诉我!
你是否在备战算法面试或刷题训练?我可以推荐一份刷题路线或做题模板。