添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
排序 时间复杂度 问题 面试时被问到冒泡 排序 ,选择 排序 和快速 排序 时间复杂度 问题,由于自己基础不扎实,当场懵逼,这件事一直让我反思了好几天。 可能你会正确地写出这几种 排序 ,可能你会背过别人给你说的 时间复杂度 。我也是这样。 先说冒泡 排序 : 冒泡 排序 不管序列是怎样,都是要比较n(n-1)/2 次的,O(N2), 而对于交换次数来说,如果是数组是有序的则,只不需要交换。如果数组是逆序的则需要交换n(
O(1):常数复杂度 Constant Complexity O(log n):对数复杂度 Logarithmic Complexity O(n): 线性 时间复杂度 Linear Complexity O(n^2): N平方 N square Complexity O(n^3): N立方 N cubic Complexity O(2^n):指 (1)在比较类 排序 中,归并 排序 号称最快,其次是快速 排序 和堆 排序 ,两者不相伯仲,但是有一点需要注意,数据初始 排序 状态对堆 排序 不会产生太大的影响,而快速 排序 却恰恰相反。 (2)线性时间非比较类 排序 一般要优于非. 挑选基准值:从数列中挑出一个元素,称为“基准”(pivot), 分割:重新 排序 数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(与基准值相等的数可以到任何一边)。在这个分割结束之后,对基准值的 排序 就已经完成, 递归 排序 子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列 排序 。 递归到最底部的判断条件是
算法(algorithm) 是指用来操作数据和解决问题的一组方法。对于同一个问题,使用不同的算法,结果一眼但是过程种消耗的资源与时间是不同的,衡量一个算法的优劣常常从时间和空间两个维度思考。分析方法是大O复杂度分析法。 时间维度:算法执行所消耗的时间,即 时间复杂度 空间维度:算法执行所消耗的内存,即空间复杂度 一、大O 时间复杂度 分析法 1> 概念:并不表示代码真正执行花费的时间,而是表示...
bool visited[MaxVertexNum]; int vex_num;//全局变量,用来统计一轮深度遍历访问的顶点个数 int arc_num;//全局变量,用来统计一轮深度遍历访问的边数 void DFSTraverse 一个无向图是树的条件是有n-1条边的连通图 顶点个数和边的信息在结构体G中含有,剩下的就是判断图是否联通 通过dfs如果能访问到所有节点那么这个图就是连通的,这里又计算了一个e其实是多余的 const int MAXN = 1000; int vis[MAXN]; void dfs(Graph *G, int v, int &n, int &e) vis[v] = 1; n++; // 来到一个从来未访问过的节点, 计数器加一