某地电信局要对业务号码进行梳理,需要检测开通的市话号码是否存在某一个是另一个的前缀的情况,以简化电话交换机的逻辑。例如:某用户号码是“11001100”,但与”110″报警电话产生前缀配对。已知市话号码最长8位,最短3位,并且所有3位的电话号码都以1开头。由于市话号码众多,长度也未必一直,高效的算法可以用O(n)的时间复杂度完成检测(n为开通市话号码个数,数量是千万级的)。那么,该算法最坏情况下需要耗费大约________内存空间。
- 5GB
- 500MB
- 50MB
- 5MB 正解如下:时间复杂度O(n)条件下需要Trie存储已遍历过的号码。Trie是个10叉树,深度8,节点数为10+10^2+..+10^8, 节点数大约在10^8个,每个结点值为0~9, 可以用4bit二进制来表示,所以,字节数目为(10^8)*4/(1024*1024*8) 约等于50MB
任一查找树(二叉分类树)的平均查找时间都小于用顺序查找法查找同样结点的线性表的平均查找时间()
只有左子树或者右子树的BST就是一样的了
下面给出的四种排序方法中,排序过程中的比较次数与序列初始状态无关 的是()
甚至连冒泡排序都不是与初始状态无关的,,优化的冒泡排序最少比较n-1次
选择排序 都是 n(n – 1)/ 2 次 是对的
堆排序建堆过程中每个非终端结点最多进行两次比较和互换操作,但是比较次数肯定不固定!
与初始状态息息相关!