我已经定义了以下方法来对数组进行排序:
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:索引超出了数组的范围.可能是什么问题?
去.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)