我正在尝试使用冒泡排序将已读入程序的数组按字母顺序排列。该代码编译没有错误,但是当我尝试运行该程序时,在“ 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
进行比较。