小工具知识网

当前位置: 首页 > 行业知识 > C++十大经典算法案例

行业知识

C++十大经典算法案例

2026-10-30 08:21:43 来源:互联网转载

文章目录

    • 1. **排序算法**:
    • 2. **搜索算法**:
    • 3. **图算法**:
    • 4. **动态规划**:
    • 5. **贪心算法**:
    • 6. **树与图算法**:
    • 7. **字符串处理算法**:
    • 8. **位运算算法**:
    • 9. **数学相关算法**:
    • 10. **���据结构算法**:

      1. 排序算法:

      • 冒泡排序:
        void bubbleSort(int arr[], int n) {    for (int i = 0; i  arr[j + 1]) swap(arr[j], arr[j + 1]);}
      • 快速排序:
        int partition(int arr[], int low, int high) {    int pivot = arr[high];    int i = (low - 1);    for (int j = low; j         if (arr[j]  x) return binarySearch(arr, l, mid - 1, x);        return binarySearch(arr, mid + 1, r, x);    }    return -1;}

        3. 图算法:

        • Dijkstra最短路径算法(仅核心逻辑):
          priority_queue pq;vector dist(n, INT_MAX); // 初始化距离数组dist[src] = 0;pq.push({0, src}); // 将源点加入优先队列while (!pq.empty()) {    int u = pq.top().second;    pq.pop();        for (auto& edge : adj[u]) {        int v = edge.first;        int weight = edge.second;        if (dist[v] > dist[u] + weight) {            dist[v] = dist[u] + weight;            pq.push({dist[v], v});        }    }}

          4. 动态规划:

          • 最长公共子序列(LCS):
            string lcs(string X, string Y, int m, int n) {    int L[m + 1][n + 1];    for (int i = 0; i         for (int j = 0; j             if (i == 0 || j == 0)                L[i][j] = 0;            else if (X[i - 1] == Y[j - 1])                L[i][j] = L[i - 1][j - 1] + 1;            else                L[i][j] = max(L[i - 1][j], L[i][j - 1]);        }    }    // 回溯构造LCS字符串,此处省略...    return lcsString;}    sort(activities.begin(), activities.end());    vector        if (activities[i].first = end) {            result.push_back(i);            end = activities[i].second;        }    }    return result;}    int val;    TreeNode* left;    TreeNode* right;    TreeNode(int x) : val(x), left(NULL), right(NULL) {}};void preorderTraversal(TreeNode* root) {    if (root == NULL) return;    cout right);}

            7. 字符串处理算法:

            • KMP算法匹配子串:
              void computeLPSArray(string pat, int M, vector& lps) {    int len = 0;    lps[0] = 0;    int i = 1;    while (i  

              8. 位运算算法:

              • 判断一个整数是否为2的幂:
                bool isPowerOfTwo(int n) {    return n > 0 && (n & (n - 1)) == 0;}

                9. 数学相关算法:

                • 计算斐波那契数列:
                  long long fibonacci(int n) {    if (n next = prev;          prev = current;          current = next;      }      head = prev;      return head;  }  ```

                  python推荐学习汇总连接:

                  50个开发必备的Python经典脚本(1-10)

                  50个开发必备的Python经典脚本(11-20)

                  50个开发必备的Python经典脚本(21-30)

                  50个开发必备的Python经典脚本(31-40)

                  50个开发必备的Python经典脚本(41-50)

                  ————————————————

                  ​最后我们放松一下眼睛

上一篇:数模下载全攻略,轻松获取,一步达成!

下一篇:香港的vps怎么样?