java - 为什么这种排序算法不起作用?
问题描述
public static int[] organizaC(int[] v) {
int i, temp = 0;
if (v.length > 0) {
for (i = 0; i < v.length; i++) {
if (v[i] > v[i + 1]) {
temp = v[i];
v[i] = v[i + 1];
v[i + 1] = temp;
i = 0;
}
}
return v;
} else {
return null;
}
}
尝试使用此功能时出现ArrayOutofBoundsIndex
异常,但 IDE 不允许我使用调试器。有谁知道发生了什么?我是否造成了一些错误的循环?
解决方案
想象一下当i
equals时会发生什么v.length - 1
,你的 if 语句:
if(v[v.length-1] > v[v.length-1+1])
您尝试在 index 处访问您的数组,v.lenght
但是随着数组的索引从0
to v.length-1
,您超出了范围!
推荐阅读
- reactjs - 动态传递参数到 react-router-dom 链接
- javascript - 调试 Chromecast 应用程序显示错误消息
- python - 步行十分钟(编辑)
- sql - 不能在 GROUP BY 中使用列别名
- c# - EXCEL RIBBON Hide Individual Tabs
- android - Kotlin 中的按钮在 Fragments 中不起作用
- c - 是否可以在 scanf 或 sscanf 中使用 strcpy?(在 C 语言中)
- service - systemd 服务未在启动时启动,在我重新启动时启动
- php - 在 eloquent 中使用 delete 字段和 deleted_at 字段
- c++ - time() 函数 Segfaults with g++ -static 在 Centos 6 上编译并在 Debian 10 上运行