您的位置:首页 > 其它

符号表以及在有序数组中的二分查找

2017-07-14 14:18 267 查看

1.符号表:

  符号表的主要的目的就是将一个键和一个值联系起来。用例能够将一个键值对插入符号表并希望在之后能够从符号表的所有键值对中按照键直接找到对应的键值。

2.基于有序数组的二分查找(迭代)

  二分查找法能够大大减少每次查找所需要的比较次数。在查找时,我们先将被查找的数和子数组中的中间键比较,如果被查找的键值比中间键小,则我们就在左子数组中查找。反之就在右子数组中查找。

部分代码如下:

public int rank(Key key){
int lo = 0,hi = N-1;  //lo的初始值为0,且永远不会变小。
while(lo <= hi){
int mid = lo + (hi - lo)/2;
int cmp = key.compareTo(Keys[mid]);
if(cmp < 0)    hi = mid - 1;
else if(cmp > 0)  lo = mid+1;
else return mid;
}
return lo;  //这里的lo就是查找到的相同值的键,也就是这个数存在在有序数组中的位置
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐