这个实现是不好的编程?

时间:2015-05-12 12:19:49

标签: c# bubble-sort

我在学校做了下面的算法进行bubblesort运动。

//Bubble Sort (My code)
static void _BubbleSort(int[] a)
{
    for (int i = 0; i < a.Length - 1; i++)
    {
        for (int j = 0; j < a.Length - 1 - i; j++)
        {
            if (a[j] > a[j + 1])
            {
                swap(a, j);
            }
        }
    }
}

但是当我查看互联网时,我会在下面看到不同的算法。 我在互联网上找到的算法使用不同的“for”循环如下。我的嵌套是循环,但下面的代码没有嵌套。

public void BubbleSort(int[] b)
{
    for (int pass = 1; pass < b.Length; pass++) // passes

        for (int i = 0; i < b.Length - 1; i++) // one pass

            if (b[i] > b[i + 1]) // one comparison
                Swap(b, i); // one swap
}

我想问的是我的代码是否是编程错误的一个例子?或者我的大脑与你的计算机科学家不同?如果你想知道的话我就是艺术系学生。

1 个答案:

答案 0 :(得分:3)

  

我想问的是我的代码是否是编程错误的一个例子?

您的代码几乎是完全相同的。不同之处在于您(正确地)使用花括号来显式声明代码块,而另一个示例则不然。一个问题是你的循环边界检查

@Sriram还指出了这样一个事实,即你的循环使用a.Length - 1 - i,而后者只是检查b.Length - 1,这对你来说实际上是不必要的并且会导致循环过早结束。使用第二个例子中的后一种方法。

除了你不应该在方法开头使用_(这只是一个命名转换)这一事实,你的算法是相同的。