Bubblesorting需要答案

时间:2015-02-02 12:32:12

标签: c# sorting

我需要一些关于此代码的帮助。我正在玩这个几个小时,什么也没得到。所以我向你们寻求帮助。

Array [b]总是返回超出范围的异常。我不知道为什么。

{
    int[] Array = new int[6];
    Array[0] = c;
    Array[1] = d;
    Array[2] = e;
    Array[3] = f;
    Array[4] = g;

    int a = 0;
    int b = 1;
    int temp = 0;

    for (int counter = 0; counter < Array.Length; counter++)
    {
        for (int counter2 = 0; counter2 < Array.Length; counter2++)
        {
            if (Array[a] > Array[b])
            {
                Console.WriteLine("{0} is Greater Than {1}, Swapping ({0},{1})", Array[a], Array[b]);
                temp = Array[a];
                Array[a] = Array[b];
                Array[b] = temp;
                Console.WriteLine("");
            }

            else
            {
                Console.WriteLine("{0} is Less Than {1}, Retain Value Position", Array[a], Array[b]);
                Console.WriteLine("");
            }

            a += 1;
            b += 1;

        }

        a = 0;
        b = 0;
    }
    for (int counter = 0; counter < Array.Length; counter++)
    {
        Console.Write(Array[counter] + " ");
    }

    Console.WriteLine("Final Position");
    return a;
}

谢谢,这是我的代码,我希望你们中的任何一个人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

您正在将一个元素与下一个元素进行比较,因此如果您已到达最后一个元素,则没有&#34; next&#34;元素和你超出界限。

将内循环更改为Length - 1以阻止此操作:

for (int counter = 0; counter < Array.Length; counter++)
{
    for (int counter2 = 0; counter2 < Array.Length - 1; counter2++)
    // ... 
}

答案 1 :(得分:0)

在递增b之前,检查你是否在数组的最后一个索引中,因为你从1开始而不是0,所以如果在循环遍历最后一个数组索引时输入块,它将超出范围。 / p>