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の番号が元の順序のままであり、プロセスが繰り返されるためだと思います。
どうすればこの状況を修正できますか。
敬具