1

WebMethodを使用してバブルソート(昇順と降順)を実行する必要がある演習があります。

これは、たとえば昇順の並べ替えに使用する方法です。

[WebMethod]
public Boolean larger(int a, int b)
{
    Boolean isLarger;
    if (a < b)
    {
        isLarger = false;
    }
    else
    {
        isLarger = true;
    }
    return isLarger;
}

これは、ソートを実行するためにメソッドにアクセスするC#アプリケーションです。5つの数字のみを並べ替える必要があります。

ArrayList numbersAL = new ArrayList();

for (int i = 0; i < 5; i++)
{
     numberInput = Int32.Parse(Console.ReadLine());
     numbersAL.Add(numberInput);
}
Boolean swap;

do
{
     swap = false;

     for (int j = 0; j < numbersAL.Count - 1; j++)
     {                          
          Console.WriteLine("output");
          int a = (int)numbersAL[j];
          int b = (int)numbersAL[j + 1];

          result = s.larger(a, b);

          if (result)
          {
               temporary = a;
               a = b;
               b = temporary;
               swap = true;                                           
          }                                                            
     }
} while (swap == true);

ただし、これで無限ループが発生します。これは、番号が入れ替わった後もArrayListの番号が元の順序のままであり、プロセスが繰り返されるためだと思います。

どうすればこの状況を修正できますか。

敬具

4

1 に答える 1

3

スワップはローカル変数aとをスワップしていますb。の対応する番号を交換する必要がありますnumbersAL

if (result)
{
    int temporary = (int)numbersAL[j];
    numbersAL[j] = numbersAL[j+1];
    numbersAL[j+1] = temporary;
    swap = true;                                           
}                    
于 2012-04-21T09:05:09.103 に答える