常见算法以及它们的时间复杂度

需要注意的是,时间复杂度只是一种衡量算法执行效率的指标,不同场景下可能存在最优解。同时,算法的时间复杂度可能会受到输入数据规模和实现方式的影响。在实际应用中,根据具体问题和数据规模选择合适的算法是很重要的。

  1. 排序算法:

    • 冒泡排序(Bubble Sort):O(n^2)
    • 选择排序(Selection Sort):O(n^2)
    • 插入排序(Insertion Sort):O(n^2)
    • 希尔排序(Shell Sort):O(n log n) ~ O(n^2)
    • 归并排序(Merge Sort):O(n log n)
    • 快速排序(Quick Sort):O(n log n) ~ O(n^2)
    • 堆排序(Heap Sort):O(n log n)
  2. 查找算法:

    • 顺序查找(Sequential Search):O(n)
    • 二分查找(Binary Search):O(log n)
  3. 图算法:

    • 深度优先搜索(DFS):O(V + E)
    • 广度优先搜索(BFS):O(V + E)
  4. 动态规划算法:

    • 斐波那契数列:O(n)
    • 最长公共子序列(LCS):O(m * n)
    • 背包问题(0-1 背包):O(n * W)
  5. 贪心算法:

    • 找零问题:O(n)
  6. 哈希算法:

    • 哈希查找:O(1) - 平均情况,O(n) - 最坏情况
  7. 字符串匹配算法:

    • 暴力匹配:O(m * n)
    • KMP 算法:O(m + n)