最好情况是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
参考:《算法技术手册》
阅读(784) | 评论(0) | 转发(0) |