给定一个数组。比较数组的第一个和第二个元素。如果第二个元素小于第一个元素,则交换它们。然后对第二个和第三个,...,倒数第二个和最后一个元素执行相同的操作。数组最后一个元素的结果是多少?
public static void swap(int a, int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
static void Main(string[] args)
{
int[] array = new int[10];
Random rand = new Random();
for(int i=0; i<array.Length; i++)
{
array[i] = rand.Next(20);
Console.Write(array[i] + " ");
}
for(int i=0; i<array.Length; i++)
{
if(array[i] > array[i + 1])
{
swap(array[i], array[i + 1]);
}
}
Console.WriteLine();
for (int i = 0; i < array.Length; i++)
{
Console.Write(array[i] + " ");
}
}
目前 if(array[i] > array[i + 1]) 我得到一个错误。并且索引超出了数组的范围。告诉我如何解决这个问题?
有必要检查边界情况并且不允许比较选项
array[i + 1](即在检查 with 之前执行 ifarray[i + 1]),或者将循环限制为长度 - 1,因为 将数组的最后一个元素与一个元素进行比较array[i + 1]没有意义