最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
来源:互联网 发布:网络电视怎么老不更新 编辑:程序博客网 时间:2024/04/29 21:05
接触堆数据结构是在排序里面讲的,空间复杂度O(1),时间复杂度O(NlogN),但是在实践中还是不如快速排序(好像快速排序可以更好的利用硬件特性)。堆的意义就在于:最快的找到最大/最小值,在堆结构中插入一个值重新构造堆结构,取走最大/最下值后重新构造堆结构 其时间复杂度为O(logN),而其他方法最少为O(N).堆实践中用途不在于排序,其主要用在调度算法中,比如优先级调度,每次取优先级最高的,时间驱动,取时间最小/等待最长的 等等 ,分为最大堆/最小堆。
哈希表主要可以在O(1)时间内对查找对象定位,但是事实上,如果输入集合不确定的情况下,可能出现大量的冲突,虽然有很多好的哈希函数,但是随着随机输入,大量冲突还是不可避免,可能出现最差情况。所以,哈希表如果用在输入集合确定(即以后只会做查询操作)的情况下,选择合适的函数函数和解决冲突的方法(perfect hash)可以在O(1)时间内完成查找(有证明,看不懂)。
二叉树支持动态的插入和查找,保证操作在O(height)时间,这就是完成了哈希表不便完成的工作,动态性。但是二叉树有可能出现worst-case,如果输入序列已经排序,则时间复杂度为O(N)
平衡二叉树/红黑树就是为了将查找的时间复杂度保证在O(logN)范围内。
所以如果输入结合确定,所需要的就是查询,则可以考虑使用哈希表,如果输入集合不确定,则考虑使用平衡二叉树/红黑树,保证达到最大效
- 最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 转载:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(使用场合)
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(转载)
- 最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义
- 二叉树 最小堆
- 平衡二叉树的使用
- 数据结构(三):非线性逻辑结构-特殊的二叉树结构:堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、红黑树、线索二叉树
- 平衡二叉树的
- java 关于二叉搜索树,平衡二叉树,b树,二叉堆的几段代码
- 二叉树存储 最小堆
- 平衡二叉树-红黑树
- Symbian OS应用开发--文件和目录(转)
- 梅花雨日期脚本
- Kernel panic: Aiee, killing interrupt handler!
- ftp列表列不出来解决方法,启用了windows防火墙的服务器 困挠了N久的问题
- Eclipse启动的时候找JRE的顺序
- 最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- C#实现的18位身份证格式验证算法[转载]
- Eclipse 3.1 中 集成 Tomcat 远程调试
- 绕口令
- 用C#快速往Excel写数据
- 程序员的人生就是这样
- 常用的 gdb 命令
- 继承的本质
- C#处理鼠标和键盘事件