我有一个练习,我需要使用WebMethod来执行冒泡排序,Ascending和Descending。
这是我用于升序排序的方法,例如。
[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中的数字仍然保持原始顺序,然后该过程才会重复。
我怎样才能纠正这种情况。
亲切的问候
答案 0 :(得分:3)
您的交换正在交换局部变量a
和b
。您需要在numbersAL
中交换相应的数字。
if (result)
{
int temporary = (int)numbersAL[j];
numbersAL[j] = numbersAL[j+1];
numbersAL[j+1] = temporary;
swap = true;
}