本文在笔记 BinarySearchST计算成本的测试代码 的基础上,尝试将成本计算和图像演示等功能封装在一个单独的类中,尽量降低对被测试类的改动。
测试方法
-
在被测类中增加一个成员及其getter;
-
在FrequencyCounter类中增加:st.getVisitTimes().drawCostCurve();
两个实例
BinarySearchST
public class BinarySearchST
对原版BinarySearchST类的修改包括增加了一个成员(vtc)和它的getter,在rank和put中各加了一个vtc.addVisitTimes()表示查询和插入操作中对数组的访问,以及put中两处vtc.putComplete(),表示在命中和未命中两种情况下将本次put的访问次数存入数组记录中。
下面是VisitTimeCounter类:
public class VisitTimeCounter {
private int visitTimesInsidePut = 0; // 一次put操作当中的数组访问次数
private final List
FrequencyCounter类中演示成本只需要一条语句:
BinarySearchST
st.getVisitTimes().drawCostCurve();
BST
即二叉查找树(binary search tree),原版代码见algs4-package.jar的BST.java类。
public class BST
查找成本体现在rank方法中,插入时每次访问的记录体现在private Node put方法中,总次数的记录体现在public void put方法中。