B树B+树的时间复杂度,是不是阶数越大越好

photon_wa 2019-01-15 09:14:45
二叉树查找的时间复杂度为O(logN),

如果不考虑磁盘I/O读取时间,M阶或者说M叉的B树的查找的时间复杂度为O(log(M,N)),M为底数。

那么是不是M的值越大越好呢?

假设M的取值为N,那么查找的时间复杂度退化为O(N).

那么M的取多少最好呢?

求大神解答
...全文
4184 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

请教下,logmN, M为阶,那N是指节点的总数吧

tzw1111 2021-09-10
  • 打赏
  • 举报
回复

"假设M的取值为N",如果用这个b+树做索引,M如果取值N,那意思就是一个节点要放N个数据,而N可能是……好多好多万。所以“假设M的取值为N”不现实,当然,如果M如果真的取值为N,那查找就确实O(N)。然后M取多少,这要根据实际。

渔父歌 2021-04-11
  • 打赏
  • 举报
回复
B+树就是专门为磁盘读取设计的,不考虑磁盘 IO对 B+树进行讨论没有意义
liujiasong00 2021-03-26
  • 打赏
  • 举报
回复
引用 3 楼 liujiasong00 的回复:
如果不考虑磁盘I/O读取时间……那就不用说B树了。直接考虑一个数组的M分查找就好了。如果M=N,那时间复杂度就是O(N-1)*logN (N)=O(N)。而二分查找时间复杂度是 log2 (N)。O(N)>O(log2(N))。

因此,按你说的“如果不考虑磁盘I/O读取时间”,那应该M=2最好。但实际中,肯定要考虑磁盘I/O时间,毕竟内存的随机读取时间比磁盘(机械硬盘)快10万倍。
liujiasong00 2021-03-26
  • 打赏
  • 举报
回复
如果不考虑磁盘I/O读取时间……那就不用说B树了。直接考虑一个数组的M分查找就好了。如果M=N,那时间复杂度就是O(N-1)*logN (N)=O(N)。而二分查找时间复杂度是 log2 (N)。O(N)>O(log2(N))。
Vincentqqqqqqq 2020-04-09
  • 打赏
  • 举报
回复
你数学好像没学好

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧