数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(使用场合)
来源:互联网 发布:行知中等职业学校 编辑:程序博客网 时间:2024/05/16 15:16
在网上看到别人的文章,引用过来,希望能帮助更多的人理解这几种重要的数据结构。
PS:原文的句子我觉得不太好,就按照自己的习惯修改了一点点
堆:用于调度
时间复杂度:空间复杂度为O(1),时间复杂度为O(NlogN)。
堆在数据结构中,是作为排序方法之一讲授的,但是在实践中,堆还不如快速排序(好像快速排序可以更好的利用硬件特性)。实际上,堆的意义在于:最快的找到最大值/最小值。在堆中插入任意值或是取出最大值/最小值后,重新构造堆结构的时间复杂度为O(logN),而其他方法最少为O(N)。
实践中,堆的用途不在于排序,而是主要用在调度算法中。比如优先级调度,或是时间驱动,用于选择具有最高优先级或是等待时间最长的候选条目。
哈希表,二叉树,红黑树:用于查找
哈希表主要可以在O(1)时间内对查找对象定位,但是事实上,如果输入集合不确定的情况下,可能出现大量的冲突,虽然有很多好的哈希函数,但是随着随机输入,大量冲突还是不可避免,可能出现最差情况。所以,哈希表如果用在输入集合确定(即以后只会做查询操作)的情况下,选择合适的函数函数和解决冲突的方法(perfect hash)可以在O(1)时间内完成查找(有证明,看不懂)。
二叉树支持动态的插入和查找,保证操作在O(height)时间内完成,这就解决了哈希表难以完成的工作:动态插入和删除。但是二叉树有可能出现worst-case,如果输入序列已经排序,则时间复杂度为O(N)。
平衡二叉树/红黑树就是为了将查找的时间复杂度保证在O(logN)范围内。
结论:
如果输入结合确定,所需要的就是查询,则可以考虑使用哈希表;
如果输入集合不确定,则考虑使用平衡二叉树/红黑树,保证达到最大效率。
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(使用场合)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(转载)
- 转载:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义
- 数据结构(三):非线性逻辑结构-特殊的二叉树结构:堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、红黑树、线索二叉树
- 数据结构之平衡二叉树(红黑树)
- 数据结构 - 平衡二叉树
- 数据结构: 平衡二叉树
- 数据结构 平衡二叉树
- 【数据结构】平衡二叉树
- 数据结构&&平衡二叉树
- EXT核心API详解(二)-Array/Date/Function/Number/String
- 第一次写博客
- EXT核心API详解(三)-Ext.Element
- 关于 ImageX 你知道多少
- MBAC人物剧情翻译——教授猫篇(A)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(使用场合)
- badi 你使用了没有
- 嵌入式系统开发,为什么选择
- Java -- 多线程技术基础(1) 方法详解
- 网页设计和设计灵感的12个无价站点
- Top10 Web2.0在线生成器
- problem 1092
- 世界顶尖网页设计师作品
- 网络