我在学校做了下面的算法进行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
}
我想问的是我的代码是否是编程错误的一个例子?或者我的大脑与你的计算机科学家不同?如果你想知道的话我就是艺术系学生。
答案 0 :(得分:3)
我想问的是我的代码是否是编程错误的一个例子?
您的代码几乎是完全相同的。不同之处在于您(正确地)使用花括号来显式声明代码块,而另一个示例则不然。一个问题是你的循环边界检查。
@Sriram还指出了这样一个事实,即你的循环使用a.Length - 1 - i
,而后者只是检查b.Length - 1
,这对你来说实际上是不必要的并且会导致循环过早结束。使用第二个例子中的后一种方法。
除了你不应该在方法开头使用_
(这只是一个命名转换)这一事实,你的算法是相同的。