在泡泡分类练习中遇到困难

本文关键字:遇到 练习 泡泡 分类 | 更新日期: 2023-09-27 18:31:47

我有一个练习,我需要使用 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 中的数字在交换数字后仍然保持原始顺序,然后该过程只是重复自己。

我该如何纠正这种情况。

亲切问候

在泡泡分类练习中遇到困难

您的交换是交换局部变量ab。 您需要在 numbersAL 中交换相应的数字。

if (result)
{
    int temporary = (int)numbersAL[j];
    numbersAL[j] = numbersAL[j+1];
    numbersAL[j+1] = temporary;
    swap = true;                                           
}