算法
排序
快速排序
稳定:否
时间复杂度
最优:O(nlog(n))
最差:O(n^2)
平均:O(nlog(n))
合并排序
合并排序是一种分治算法。这个算法不断地将一个数组分为两部分,分别对左子数组和右子数组排序,然后将两个数组合并为新的有序数组。
稳定:是
时间复杂度:
最优:O(nlog(n))
最差:O(nlog(n))
平均:O(nlog(n))
桶排序
桶排序是一种将元素分到一定数量的桶中的排序算法。每个桶内部采用其他算法排序,或递归调用桶排序。
时间复杂度
最优:Ω(n + k)
最差: O(n^2)
平均:Θ(n + k)
基数排序
基数排序类似于桶排序,将元素分发到一定数目的桶中。不同的是,基数排序在分割元素之后没有让每个桶单独进行排序,而是直接做了合并操作。
时间复杂度
最优:Ω(nk)
最差: O(nk)
平均:Θ(nk)
图算法
深度优先搜索
深度优先搜索是一种先遍历子节点而不回溯的图遍历算法。
时间复杂度:O(|V| + |E|)
广度优先搜索
广度优先搜索是一种先遍历邻居节点而不是子节点的图遍历算法。
时间复杂度:O(|V| + |E|)
拓扑排序
拓扑排序是有向图节点的线性排序。对于任何一条节点 u 到节点 v 的边,u 的下标先于 v.
时间复杂度:O(|V| + |E|)
Dijkstra算法
Dijkstra 算法是一种在有向图中查找单源最短路径的算法。
时间复杂度:O(|V|^2)
Bellman-Ford算法
Bellman-Ford 是一种在带权图中查找单一源点到其他节点最短路径的算法。
虽然时间复杂度大于 Dijkstra 算法,但它可以处理包含了负值边的图。
时间复杂度:
最优:O(|E|)
最差:O(|V||E|)
以上就是潍坊IT培训给大家做的内容详解,更多关于IT知识的学习,请继续关注潍坊IT培训。