TEntity
用户需要选择要使用的方法,然后编写多少个数字,然后编写它们,程序按照方法中描述的方式对数字进行排序。第一种方法一切正常,但第二种显示错误:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0
BaseEntity<TKey, TUId>
正如您所看到的那样是Shell排序方法 你能帮忙吗?
答案 0 :(得分:1)
第t=(int) (Math.log(A.length)/Math.log(2)-1);
行中的问题
如果数组的长度小于6
,那么t
将为零。所以你将创建零长度的数组。这是一个错误。可能你需要一些检查,可能是另一个公式。无论如何,你必须检查代码。
答案 1 :(得分:0)
如上所述,您的问题是获取h
数组长度的公式。
一个简单的解决方法就是改变这一行:
t = (int) (Math.log(A.length) / Math.log(2) - 1);
为:
t = A.length;
如你所愿,新数组的长度与初始数组的长度相同。