trie树 平均查找时间

本文介绍了一种使用Trie树实现的高效算法,该算法可在O(n)时间复杂度内检测大量市话号码是否产生前缀配对冲突,如用户号码与紧急服务号码的冲突。文章详细说明了算法原理及所需内存估算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某地电信局要对业务号码进行梳理,需要检测开通的市话号码是否存在某一个是另一个的前缀的情况,以简化电话交换机的逻辑。例如:某用户号码是“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 次  是对的

堆排序建堆过程中每个非终端结点最多进行两次比较和互换操作,但是比较次数肯定不固定!
与初始状态息息相关!



    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值