摘要:
1、 概述 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。 Trie一词来自retrieve,发音为/tri:/ “tree”,也有人读为/traɪ/ “try”。 Trie树可以利用字符串的公共前缀来节约 阅读全文
摘要:
简介 前面讨论的很多文章里,都是针对无向图进行的分析。无向图的一个特性就是其中一旦两个节点a和b是相连的,这就意味着有路径从a到b,同时也有从b到a的。它具体对应的矩阵表达方式对应着一个对称矩阵。而这里重点是考察有向图。和无向图比起来,有向图更加多了一种出入度的概念。因为方向的有向性,很多以前在无向 阅读全文
摘要:
ackerman函数(阿克曼函数,以下简称ack函数)是一个双参数递归函数,用递归计算代码如下 int ack(int m,int n) { if (m==0) return n+1; else if (n==0) return ack(m-1,1); else return ack(m-1,ack 阅读全文
摘要:
递归函数具有很好的可读性和可维护性,但是大部分情况下程序效率不如非递归函数,所以在程序设计中一般喜欢先用递归解决问题,在保证方法正确的前提下再转换为非递归函数以提高效率。 函数调用时,需要在栈中分配新的帧,将返回地址,调用参数和局部变量入栈。所以递归调用越深,占用的栈空间越多。如果层数过深,肯定会导 阅读全文
摘要:
这道题大概就是要实现一个数组,这个数组中行所有元素都有序,列所有元素都有序。 其实这也是应用堆排序的思想,就是把这个数组的看做是二叉树组成的。一个元素的下面一行的对应一个元素是它的左孩子,右边一个元素是它的右孩子。 这样就可以应用堆排序来解决这个问题了。 同时也是像堆排序一样,实际使用一维数组存储数 阅读全文
摘要:
堆排序很多时候的实际应用并不如快速排序(quick sort)那么快,但是也有很多实际的应用,例如优先级排序就是其中之一。 优先级排序可以应用到系统的调度算法中,人工智能中也经常要用到,熟悉这个算法很有好处。 不要让名字误导我们,优先级队列其实数据结构不一定就是一个普通的队列数据结构,这里的底层数据 阅读全文