pseudocode
Woody

Woody @woodyxin

About: all my ex living in taxes

Joined:
Apr 19, 2025

pseudocode

Publish Date: Jun 22
0 0

当然可以,以下是一些经典算法的伪代码(伪算法),这些算法广泛用于刷题、面试和工程中。每一个都写得尽量通俗易懂,便于记忆与实现。


🔢 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
Enter fullscreen mode Exit fullscreen mode

🔁 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
Enter fullscreen mode Exit fullscreen mode

🔍 3. 深度优先搜索(DFS)

DFS(node, visited):
    mark node as visited
    for each neighbor of node:
        if neighbor not visited:
            DFS(neighbor, visited)
Enter fullscreen mode Exit fullscreen mode

🔍 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
Enter fullscreen mode Exit fullscreen mode

💰 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  // 满足的孩子数
Enter fullscreen mode Exit fullscreen mode

🧠 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
Enter fullscreen mode Exit fullscreen mode

🧩 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]
Enter fullscreen mode Exit fullscreen mode

需要我把某一段转成 Python/C++/Java 实现,或者加图示/动画讲解,也可以告诉我!

你是否在备战算法面试或刷题训练?我可以推荐一份刷题路线或做题模板。

Comments 0 total

    Add comment