我正在尝试执行插入排序,但它无法正常工作
我正在按照要求做,但它仍然存在错误
关于我做错了什么的任何建议或建议
请帮忙,我是编程新手。
package practicepkg;
public class InsertionDemo {
public static void main(String[] args) {
int a[] = {10, 2, 3, 45, 66};
int count = 1, temp = 0;
int i, j, key;
for (j = count; j < 4; j++) {
key = j;
if (key < 4 && temp < 4) {
for (i = temp; i >= 0; i--) {
if (a[key] < a[i]) {
int n = a[key];
a[key] = a[i];
a[i] = n;
}
key++;
}
temp++;
count++;
} else {
break;
}
}
for (int k = 0; k < 4; k++) {
System.out.println("Sorted array is " + a[k]);
}
}
}
线程中的异常"主";java.lang.ArrayIndexOutOfBoundsException:索引5超出长度5的界限
在实践中。InsertionDemo.main(InsertionDemo.java:17(
您正在将key分配给j的值,该值应被分配a[j]
的值。进一步将大小替换为5或数组大小,同时消除计数和临时变量。您更正的代码在这里:
public class InsertionDemo {
public static void main(String[] args) {
int a[] = {10, 2, 3, 66, 45};
int i, j, key;
for (j = 1; j < a.length; j++) {
key = a[j];
for (i = j - 1; (i >= 0 && a[i] > key); i--) {
a[i + 1] = a[i];
}
a[i + 1] = key;
}
for (int k = 0; k < a.length; k++) {
System.out.println("Sorted array is " + a[k]);
}
}
}