Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1447056
  • 博文数量: 254
  • 博客积分: 8696
  • 博客等级: 中将
  • 技术积分: 2961
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-03 16:46
文章分类

全部博文(254)

文章存档

2015年(4)

2014年(18)

2013年(16)

2012年(8)

2011年(25)

2010年(2)

2009年(74)

2008年(107)

分类: C/C++

2011-04-26 21:10:43

    最好情况是O(1),平均情况和最坏情况是O(long n)。
    二分查找是分治的思想,二分法查找的集合必须是有序的。如果集合是静态的,那么元素可以被放进一个数组里。如果需要从集合中添加或者移除元素,则需要改为二叉树的数据结构。

    对于与动态数据处理相关的操作,如果集合能够存储在内存中,则可以考虑使用基于散列,并且使用
冲突链的查找。对于需要处理的动态数据过大不能放在内存中,此时,查找时间取决于二级存储器的输入输出时间,一个有效的解决方法是使用B树的n元树。

sort(A, n, t)
    low = 0
    hight = n-1

    while(low <= hight)
        ix = (low + hight) /2
        if(A[ix] > t)
            low = ix + 1
        else if(A[ix] < t)
            hight = ix - 1
        else
            return true
    return false
end

参考:《算法技术手册》
阅读(753) | 评论(0) | 转发(0) |
0

上一篇:桶排序

下一篇:基于散列的查找

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