【发布时间】:2012-07-30 00:13:37
【问题描述】:
什么数据结构在时间和空间上都有效地支持以下集合操作?
- 联合
- 区别
- 是成员
- 添加
- 删除
我可以想到 3 种不同的方式来做这些操作,假设我们有两个集合,它们的大小都是 N:
位数组:
1. O(N) 2.O(N) 3.O(1) 4.O(1) 5.O(1)
哈希表:
1. O(N) 2.O(N) 3.O(1) 4.O(1) 5.O(1)
有序树:
1. O(NlogN) 2.O(NlogN) 3.O(logN) 4.O(logN) 5.O(logN)
Bit Array 和 HashTable 速度快但占用内存过多,Ordered Tree 速度慢但占用内存少。
请注意:集合中可能包含除整数以外的其他类型,如浮点数或字符串
还有哪些数据结构既快速又通用,又节省空间?
【问题讨论】:
-
您尝试使用此数据结构的应用程序是什么?
-
如果您正在考虑使用 JAVA,这可能会有所帮助 docs.oracle.com/javase/6/docs/api/java/util/Set.html
-
为什么哈希表(哈希集)不能像有序树一样保存任意(但可比较)对象?
-
对于日志分析,并不是所有的操作都需要,但我很好奇。
-
@Ted Hopp 你是对的,我犯了一个错误。
标签: algorithm data-structures language-agnostic