编程十大算法 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可 ...
分类:
编程语言 时间:
2018-04-23 21:41:18
阅读次数:
210
1. 时间复杂度就是while的次数,二分查找O(h)=O(log2n) 2. 节点的广度优先遍历 3. DOM树的深度优先遍历 4. 冒泡排序(O(n^2)) 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该 ...
分类:
编程语言 时间:
2018-04-23 11:11:40
阅读次数:
166
对于进行广度优先搜索的队列中,应该始终满足两个性质: 性质1:若队首为第i层拓展到的节点,则队列中最多只能存在第i层和第i+1层的节点,不可能出现3层节点。 性质2:队列中的元素会严格按照层数单调递增,而且会按照入队的先后来判别拓展的优先程度,即先入队的一定是更优先的,而越往后越次之。 通过这两个性 ...
分类:
其他好文 时间:
2018-04-15 19:45:27
阅读次数:
167
接着(一)start (二)广度优先搜索(BFS) 广度优先搜索(又称宽度优先搜索算法)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。 Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开 ...
分类:
其他好文 时间:
2018-04-14 23:04:12
阅读次数:
194
二叉树的遍历 所谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且仅访问一次,我们把这种对所有节点的访问称为遍历(traversal)。 树的两种重要的遍历模式是深度优先遍历和广度优先遍历: 深度优先一般用递归 广度优先一般用队列 一般情况下能用递归实现的算法大部分也能用堆栈来实现 ...
分类:
其他好文 时间:
2018-04-14 16:26:53
阅读次数:
184
网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据的时候就会涉及到去重的问题,我们需要将爬过的url记录下来,我们将上图进行更改 在爬虫系统中,待抓取URL队列是很重要的一部分,待抓取URL队列中的URL ...
分类:
其他好文 时间:
2018-04-13 23:31:38
阅读次数:
261
深度优先搜索和广度优先搜索 先随便记记。 深度优先搜索是走迷宫,不能分身,一条路走到底。广度优先搜索按照与原点的距离逐层搜索。 深度优先搜索:(1) 如果可能,访问一个邻接的未访问顶点,标记它,并把它放入栈中。(2) 当不能执行规则1时,如果栈不空,就从栈中弹出一个顶点。(3) 如果不能执行规则1和 ...
分类:
其他好文 时间:
2018-04-11 15:39:36
阅读次数:
187
深度优先搜索算法的概念 与广度优先搜索算法不同,深度优先搜索算法类似与树的先序遍历。这种搜索算法所遵循的搜索策略是尽可能“深”地搜索一个图。它的基本思想如下:首先访问图中某一个起始顶点v,然后由v出发,访问与v相邻且未被访问的任一顶点w1,再访问与w1邻接且未被访问的任一顶点w2,….重复上述过程。 ...
分类:
编程语言 时间:
2018-04-10 10:58:23
阅读次数:
320
继承关系图: 广度优先遍历:先找A,再找B、C,最后找D、E。(顺序:A、B、C) 深度优先遍历:先找A,再找B,接着找D、E(把B里面找完);然后找C。(顺序:A、B、D、E、C) MRO-C3 搜索: ...
分类:
编程语言 时间:
2018-04-09 00:32:26
阅读次数:
403