排序数组引发以下错误System.IndexOutOfRangeException:索引超出了数组的范围

joh*_* Gu 0 c# arrays

我已经定义了以下方法来对数组进行排序:

public int[] BubbleSort(int[] ints)
{
    for (int i = 0; i < ints.Length; i++)
    {
        if (ints[i] > ints[i + 1])
        {
            int tempValue = ints[i];
            ints[i] = ints[i + 1];
            ints[i + 1] = tempValue;         
        }
    }
    return ints;               
}
Run Code Online (Sandbox Code Playgroud)

但是,我上面的实现是抛出System.IndexOutOfRangeException:索引超出了数组的范围.可能是什么问题?

And*_*ker 5

.Length - 1代替.此外,使用冒泡排序,您需要迭代数组,直到不再交换任何元素(这使得冒泡排序如此低效):

public int[] BubbleSort(int[] ints)
{            
    bool swapped = true;
    while (swapped) 
    {
        swapped = false;
        for (int i = 0; i < ints.Length - 1; i++)
        {
            if (ints[i] > ints[i + 1])
            {
                swapped = true;
                int tempValue = ints[i];
                ints[i] = ints[i + 1];
                ints[i + 1] = tempValue;
            }     
        }
    }

    return ints;               
}
Run Code Online (Sandbox Code Playgroud)