下面是在原有BinarySearchST类上的修改,增加了两个成员(visitTimes与visitTime)和一个方法(getComparisionTimes),查找的成本主要体现在rank方法中的“cmp=key.compareTo(keys[m])”,在这一句后面加上visitTime++来标记访问次数增加了一次;写入的成本体现在put方法的两个位置,当key已经在keys中时,本次put的总成本是visitTime+1,当key不在keys数组中时(增加一个新元素),每移动一个元素,visitTime要加1,注意每次put操作记录结束后,除了要将次数存入visitTimes数组,还要将visitTime清零。
另外下面的代码省略了与原BinarySearchST类相同的成员和方法。
public class BinarySearchST
计算成本的图像演示代码FrequencyCounter类见笔记 SequentialSearchST算法成本的图形演示 。