不二如是 发表于 昨天 11:00

计算机科学中5种诡异「数据结构」但都超级实用!



在程序世界里,数组、链表、哈希表、栈、队列、图与树共同构成了处理数据的“七武器”。

在线学习:

https://www.bilibili.com/video/BV1ue82zrEu5

它们让我们能够以更低的时间成本完成创建、读取、更新与删除。

当算法需要更大规模的数据检索时,仅能左右分支的平衡二叉搜索树虽然平均查找复杂度可以降到O(log n),一旦退化或遇到海量数据就会导致频繁磁盘寻址。

1970年,Bayer与McCreight在波音实验室发明了B-tree,通过让单个节点容纳多关键字并拥有高扇出子节点,将树高显著压缩;

B+树进一步把真正的数据只放在有序串联的叶节点上,使范围查询与顺序遍历只需顺着叶链就能完成,从而在数据库与文件系统里大幅减少磁盘I/O。

当业务对前缀查找或长文本编辑有极致要求时,常见树结构又显得捉襟见肘。

RadixTree(压缩前缀树)把只有一个子节点的路径合并到父节点,天然适配IP地址与URL这种共享前缀极多的键,使一次匹配只与键长相关而与集合规模无关;

Linux路由表就借此实现了高速前缀转发。编辑器领域则偏爱Rope:

把整串文本切分成固定大小的叶片,再用一棵平衡二叉树记录片段长度。
插入、删除或撤销时,只需局部旋转与重组即可在O(log n)内完成,避免了对百兆级文件的大规模内存复制。

还有一些“概率型”或“伪随机”结构专为过滤与冲突而生。BloomFilter用k个独立哈希函数把元素映射到位图,查询时只要发现某个位为0即可确定元素一定不存在;

代价是当所有对应位都为1时只能回答“也许存在”,产生极低的假阳性但绝无漏判。

若需要在哈希表里彻底消除链表退化风险,可采用CuckooHashing:

为每个键准备两到三个候选槽位,插入冲突时把旧键逐出并重新安置,如同布谷鸟占巢。
最终在负载率合理范围内保证O(1)的最坏情况查找时间,为高速缓存与路由设备提供了确定性性能保证。

评论区聊聊你的想法吧{:10_330:}

https://xxx.ilovefishc.com/forum/202505/12/120451wiv7viv5iebupbbr.png

>>万能兑换C币许愿池<<

如果有收获,别忘了评分{:10_281:} :

https://xxx.ilovefishc.com/forum/202011/20/092334ggd6inlzfisfrdir.png.thumb.jpg
https://xxx.ilovefishc.com/forum/202505/21/111710rvxgdn90vaub5gag.gif                                                                  

尉尉的可乐 发表于 昨天 11:11

鱼C论坛不愧是全国最大的「编程/AI/科技/新闻/娱乐」学习论坛!朕超喜欢这里{:13_438:}

每天都要快乐 发表于 昨天 11:41

虽然现在我还看不懂,但是我会一直泡在论坛里,直到我能看懂!

某一个“天” 发表于 昨天 14:37

{:10_256:}

快速收敛 发表于 昨天 15:31

不会不会{:10_257:}

不二如是 发表于 昨天 15:55

快速收敛 发表于 2025-8-1 15:31
不会不会

都不会吗

不二如是 发表于 昨天 15:55

每天都要快乐 发表于 2025-8-1 11:41
虽然现在我还看不懂,但是我会一直泡在论坛里,直到我能看懂!

一定可以滴!!

山外风盈袖 发表于 昨天 17:14

感谢分享!!鱼C论坛不愧是全国最大的「编程/AI/科技/新闻/娱乐」学习论坛!朕超喜欢这里{:13_438:}
页: [1]
查看完整版本: 计算机科学中5种诡异「数据结构」但都超级实用!