2015-04-14一些知识点

  1、辗转相除法的时间复杂度是O(lgn)

  辗转相除法(即欧几里得算法)求两个正整数的最大公约数

  设两个数m,n,假设m>=n,用m除以n,求得余数q。若q为0,则m为最大公约数;若q不等于0,则进行如下迭代
   m=n,n=q,即原除数变为新的被除数,原余数变为新的除数重复算法,直到余数为0为止。余数为0时的除数n,即为原始m、n的最大公约数

  2、看到一个题:

  有20个数组,每个数组里面有500个数,升序排列,求出这10000个数字中最大的500个。求复杂度

分析:就是一个归并排序,20个数组的最小元素全部进堆。每次取最小的一个的时候,从最小元素对应的数组里取接下来一个放进堆里。堆里一直最多20个数,充分利用20个数组的有序性。复杂度:500*log(20)。

  3、图的深度优先遍历和广度优先遍历:

  深度遍历:  深度遍历类似于树的先根遍历,是树的先根遍历的推广。假设初始状态是图中所有顶点未曾被访问,则深度遍历可从图中 某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至图中所有与v有路径的顶点都被访问到,若此时 图中尚有顶点未被访问,则另选图中一个未被访问的顶点作为起始点,重复上述过程,直至图中所有顶点都被访问到为止。

  广度遍历:广度优先搜索遍历类似于树的按层次遍历的过程。假设从图中某个顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别 从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先与“后被访问的邻接点”被访问,直至图中所有已被访问的邻接点都被访问到, 若此时图中尚有顶点未被访问到,则另选图中一个未被访问的顶点作为起始点,重复上述操作,直至图中所有顶点都被访问到为止。

  4、堆排序:建堆,维护堆,堆排序

      http://www.cnblogs.com/mengdd/archive/2012/11/30/2796845.html 

      http://blog.csdn.net/clam_clam/article/details/6799763  转载的,表示感谢

  5、希尔排序:希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。

      http://www.cnblogs.com/kkun/archive/2011/11/23/2260288.html  转载,希尔排序

      http://zh.wikipedia.org/wiki/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F   转载,步长的选择

      http://blog.csdn.net/morewindows/article/details/6668714   转载,希尔排序

  6、Trie树:

      http://www.cnblogs.com/huangxincheng/archive/2012/11/25/2788268.html  转载,Trie树

  Trie树的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。Trie树经常被搜索引擎系统用于文本词频统计。

原文地址:https://www.cnblogs.com/luankun0214/p/4424946.html