计算机科学中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 鱼C论坛不愧是全国最大的「编程/AI/科技/新闻/娱乐」学习论坛!朕超喜欢这里{:13_438:} 虽然现在我还看不懂,但是我会一直泡在论坛里,直到我能看懂! {:10_256:} 不会不会{:10_257:} 快速收敛 发表于 2025-8-1 15:31
不会不会
都不会吗 每天都要快乐 发表于 2025-8-1 11:41
虽然现在我还看不懂,但是我会一直泡在论坛里,直到我能看懂!
一定可以滴!! 感谢分享!!鱼C论坛不愧是全国最大的「编程/AI/科技/新闻/娱乐」学习论坛!朕超喜欢这里{:13_438:}
页:
[1]