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就是查找到的相同值的键,也就是这个数存在在有序数组中的位置
}