我正在尝试使用冒泡排序来按字母顺序排列我已读入程序的数组。代码编译时没有错误,但当我尝试运行该程序时,我的“if”构造上出现数组索引越界异常。我已将 int i 初始化为 0 以解释数组的第一个索引,因此我认为我的错误在其他地方。我并不是要求任何人为我编写代码,只是也许是正确方向的一点。感谢您的帮助。
public static String[] bubbleSort(String[] inL)
{
String temp;
int i = 0, passNum;
for(passNum = 1; passNum <= (inL.length); i++) // controls passes through bubble sort
{
if(inL[i].compareToIgnoreCase(inL[i + 1]) < 0)
{
temp = inL[i];
inL[i] = inL[i + 1];
inL[i + 1] = temp;
}
}
return inL; // returns sorted array
} // end bubbleSort method
最佳答案
您将 passNum
而不是 i
与数组的长度进行比较。由于 passNum
从未被修改,因此循环条件始终为 true,并且 i
会递增,直到超出数组的范围。
即使此特定问题得到解决,您当前的实现仍可能会遇到相差一错误的问题。考虑是否应该将 i
与 inL.length - 1
进行比较。
关于java - 冒泡排序字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20076729/