老师您先看眼图,我用Java代码实现的计算数组排序时间的方法

来源:2-4 测试算法的性能

我会回来的333

2021-04-27

图片描述
图片描述bobo老师为啥直接放入comp会报>错误数目的参数错误?我搞不明白为啥还要Object[] obj =Object[]{comp};我看了invoke方法的API了,它第一个参数是调用的类的全类名,第二个参数是给方法形参赋值的实参, invoke它两个参数(Object obj, Object…args)后面这个参数是个可变个数形参,可以写成Object[] args=new Object[]{各种数据类型的参数},我试了直接放入后就会光标提示下图
图片描述
我不知道是哪里理解出了问题,就这个testSort方法创建时候Object[] obj =Object[]{comp};没看明白
后续一些想法图片描述
图片描述
其实我本来想了想删了这个提问的,感觉这个问题不属于算法范畴,但好像慕课又不能删提问,而且我感觉我写的这个方法并不是很通用只针对了引用数据类型,每次要是测试别的排序方法得改那个要测试的方法名就是getDeclaredMethod()第一个参数

写回答

1回答

liuyubobobo

2021-04-28

直接传入 comp 和传入你的代码中的那个 obj 是不同的。


comp 是一个数组,其中承载了所有待排序的元素;

obj 是一个数组,这个数组中只有一个元素,这个元素就是 comp 数组。


之所以这么写,是因为我们需要把 comp 打成一个针对排序算法的参数。

比如 comp 里有 100 个数字。

如果传入的是 obj,就是在说,这个排序算法里需要一个参数,这个参数是 comp 这个数组;

如果传入的是 comp,就是在说,这个排序算法需要 100 个参数,这 100 个参数在 comp 数组中。

而前者是符合我们的排序算法的说明的。


“我写的这个方法并不是很通用只针对了引用数据类型”

这句话我没有很懂,你具体是指在什么数据类型下这个测试函数不能胜任?


1
3
我会回来的333
非常感谢!
2021-05-13
共3条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程