Chinaunix首页 | 论坛 | 博客
  • 博客访问: 87813
  • 博文数量: 44
  • 博客积分: 2525
  • 博客等级: 少校
  • 技术积分: 316
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-25 17:01
文章分类

全部博文(44)

文章存档

2010年(44)

我的朋友

分类: C/C++

2010-06-12 14:49:27

接触堆数据结构是在排序里面讲的,空间复杂度O(1),时间复杂度O(NlogN),但是在实践中还是不如快速排序(好像快速排序可以更好的利用硬 件特性)。堆的意义就在于:最快的找到最大/最小值,在堆结构中插入一个值重新构造堆结构,取走最大/最下值后重新构造堆结构 其时间复杂度为O(logN),而其他方法最少为O(N).堆实践中用途不在于排序,其主要用在调度中,比如优先级调度,每次取优先级最高的,时间驱动,取时 间最小/等待最长的 等等 ,分为最大堆/最小堆。

G U)oxaz2ny"U

E9D ^eK哈希表主要可以在O(1)时间内对查找对象定位,但是事实上,如果输入集合不确定的情况下,可能出现大量的冲突,虽然有很多好的 哈希函数,但是随着随机输入,大量冲突还是不可避免,可能出现最差情况。所以,哈希表如果用在输入集合确定(即以后只会做查询操作)的情 况下,选择合适的函数函数和解决冲突的方法(perfect hash)可以在O(1)时间内完成查找(有证明,看不懂)。BSD爱好者乐园 P8sf7L9_V+A9D'p'K

BSD爱好者乐园!y^7_ qf+Q%gx/h

支 持动态的插入和查找,保证操作在O(height)时间,这就是完成了哈希表不便完成的工作,动态性。但是二叉树有可能出现worst-case,如果输 入序列已经排序,则时间复杂度为O(N)

1o%w8Q8gF{7OiEEBSD爱好者乐园*]6Q+H2KZi yj

平衡二叉树/红黑树就是为了将查找的时间复杂度保证在O(logN)范围内。

lHj [8WD bBSD 爱好者乐园 AO)}%BM P
阅读(409) | 评论(0) | 转发(0) |
0

上一篇:M-M-M notes

下一篇:Google Chrome 漫画中文书

给主人留下些什么吧!~~