测试自定义数据结构的复杂性

时间:2016-03-05 21:07:07

标签: java junit time-complexity

作为一项任务,我实现了一个自定义数据结构和一些测试用例,以确保它正常工作。 代码本身并不是问题的真正需要,但你可以假设它是某种SortedList。 我的问题是我还被要求测试大O复杂度,例如确保put()是o(n)等。

我很难理解如何编写这样的测试。

一种想到的方法是使用一个简单的计数器计算put()方法内的迭代量,然后检查它是否等于列表的大小,但是这需要我更改代码列表本身可以计算确切的数字,而且我更愿意在课堂外以适当的方式进行,只保留一个实例。

任何人的想法?我真的很感激你的帮助!

2 个答案:

答案 0 :(得分:2)

使用单元测试,您可以测试类的接口,但迭代次数不是此处接口的一部分。您可以使用计时器来检查不同大小的运行时行为。如果它是O(n),那么时间和n之间应该存在线性相关性。

答案 1 :(得分:2)

获取测试开始时的当前时间,调用您经过多次测试的方法,获取当前时间,并检查差异以获得执行时间。使用不同大小的输入重复,并检查执行时间是否遵循预期关系。

对于o(n)算法,合适的检查是将输入大小加倍,使执行时间大约加倍。