IndexOutOfBoundsException为什么?

fki*_*s15 0 java sorting

好的...我正在尝试实现我自己的bin排序版本,通常称为桶排序.我运行程序,我得到一个indexOutOfBounds错误.我不知道为什么.有人可以解释原因.请注意,binsort算法尚未完成.Int n是数组的长度,m是由随机数生成器从0到100生成的列表的上限.

public static void binSort (int []array, int n, int m)
{
//create upperbounds
int x = m / 3;                    //33
int y = n - x;                    //67
int z = n;                        //100

int []temp1 = new int [n-1];
int []temp2 = new int [n-1];
int []temp3 = new int [n-1];

for (int i: array)
{
    if(array[i] < x)
    {
        temp1[i] = array[i];
    }
    else if(array[i] < y)
    {
        temp2[i] = array[i];
    }
    else
    {
        temp3[i] = array[i];     
    }
}

for ( int j = 0; j <= x; j++)
    array[j] = temp1[j];
for ( int k = x + 1; k <= y; k++)
    array[k] = temp2[k];
for ( int l = y + 1; l <= z; l++)
    array[l] = temp3[l];

}
Run Code Online (Sandbox Code Playgroud)

Fri*_*itz 5

那里的enhanced for循环有轻微的误用.

for (int i: array)
Run Code Online (Sandbox Code Playgroud)

在这里,i不是索引而是元素array.每次for迭代时,它会自动为您执行此操作:

for(int index = 0; index < array.length; index++) {
    int i= array[index];
Run Code Online (Sandbox Code Playgroud)

长话短说,for处理你的迭代,你只需要使用i元素.