algorithm - 就内存而言,二叉搜索树与哈希表
问题描述
我在互联网上听到过不同的事情,包括有人明确指出 BST 与 hast 表相比需要更少的内存,因为哈希表一次获得的内存比他们目前需要的多。
谁能告诉我每种结构与其他结构相比的优缺点,仅它在内存方面。
解决方案
二叉搜索树只不过是一个链表,每个节点有 2 个指针。所需内存的数量级为 O(n) ,即与存储在其中的元素数量相同。另一方面,哈希映射通常实现为数组。所以,总是有一些未使用的空间。在这里阅读有关如何在 java 中实现哈希映射。:http: //java-performance.info/memory-consumption-of-java-data-types-2/
HashMap 建立在 Map.Entry 对象数组之上。该实现确保此数组长度始终至少等于 max(size, capacity) / load_factor。HashMap 的默认加载因子是 0.75,默认容量是 16。加载因子指定数组的哪个部分可用于存储,并且是介于 0 和 1 之间的值。加载因子越高,浪费的空间越少,但是由于冲突率的增加,HashMap 开始工作得更慢。负载因子越小,浪费的内存越多,但由于碰撞的可能性较小,HashMap 的性能正在提高。
推荐阅读
- typescript - 如何通过映射类型创建类型以在打字稿中使用`Map<>`
- phpword - 将 DOCX 数据插入模板
- javascript - 如果发生错误,如何调用两次 API?
- python - 熊猫:如何将整数出生日期转换为年龄
- lodash - Lodash 4:如果对象属性包含字符串的某个部分,如何省略它们?
- shell - 案例:C shell 中 switch 参数过多错误
- r - 从 R 脚本循环 tbl_regression 不为 rmarkdown::render 打印
- javascript - Javascript-Resolve 对 HTML 的承诺
- node.js - 节点检查器离线?
- wordpress - 如何更改折线图和条形图(highcharts / wordpress)的颜色?