标签:
顺序:
for(Node x = first; x !=null,x=x.next){
if(key.equals(x.key))
{
return x.val;(x.val = val;)
}
}
二分: (基于有序数组)
迭代
rank
int mid ;
int cmp;
while(lo>=hi){
mid = lo+(hi-lo)/2;
cmp = key.compareTo(keys[mid]);
if(cmp <0) hi=mid-1;
else if (cmp>0) lo = mid +1;
else return mid;
}return lo;
递归:
rank(Key key,int lo ,int hi){
mid = lo+(hi-lo)/2;
cmp = key.compareTo(keys[mid]);
if(cmp <0) rank(key, lo, mid-1);
else if (cmp>0) rank(key, mid+1,hi);
else return mid;
}
比较
最坏情况下的成本 平均情况下的成本 是否高效低支持有序性的相关操作
查找 插入 查找 插入
顺序查找(无序链表) N N N/2 N 否
二分查找(有序数组) lgN 2N lgN N 是
顺序查找适合小型问题
二分插入很慢
标签:
原文地址:http://www.cnblogs.com/ykong/p/4322623.html