- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在不查看任何源代码的情况下实现合并排序。每当我尝试运行我的程序时,我都会收到此异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Mergesort.merge_halves(Mergesort.java:40)
at Mergesort.mergesort(Mergesort.java:31)
at Mergesort.mergesort(Mergesort.java:29)
at Mergesort.main(Mergesort.java:15)
这是我的程序:
public class Mergesort {
private static int [] tempArr;
public static void main(String [] args) {
int [] arr = new int[5];
arr[0] = 2;
arr[1] = 4;
arr[2] = 9;
arr[3] = 11;
arr[4] = 3;
Mergesort sorter = new Mergesort();
sorter.mergesort(arr, arr[0], arr.length - 1);
for(int i = 0; i < tempArr.length - 1; i++) {
System.out.print(tempArr[i] + " ");
}
}
public void mergesort(int [] arr, int low, int high) {
if(low >= high) {
return;
}
int mid = (low + high) / 2;
mergesort(arr, low, mid);
mergesort(arr, mid + 1, high);
merge_halves(arr, low, mid, high);
}
public void merge_halves(int [] arr, int low, int mid, int high) {
tempArr = new int[arr.length];
int i = 0;
while(i < tempArr.length) {
if(arr[i] <= arr[i + 1]) {
tempArr[i] = arr[i];
i++;
} else {
tempArr[i] = arr[i + 1];
i++;
}
}
}
}
我尝试通过更改 while 循环中的条件来修复错误,以使程序正确运行
while(i < tempArr.length - 1)
但是当我编译它并打印 tempArr 时,我返回的数组缺少一个元素:
2 4 9 3
我该如何解决这个问题?
最佳答案
不确定这是否是唯一的错误,但您在第一次调用 mergeSort
时传递的是数组的第一个数字,而不是数组的第一个索引。
改变
sorter.mergesort(arr, arr[0], arr.length - 1);
至
sorter.mergesort(arr, 0, arr.length - 1);
其实merge_halves
也有问题。当 i == tempArr.length - 1 时,arr[i + 1] 将导致 ArrayIndexOutOfBoundsException。
关于java - 不断收到 java.lang.ArrayIndexOutOfBoundsException : 5 for my mergesort implementation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32607297/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!