我在学校为短跑练习做了下面的算法。
//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
}我想问的是,我的代码是否是错误编程的一个例子?还是我的大脑和你们的电脑科学不同?顺便说一句,我是文科学生,如果你不知道的话。
发布于 2015-05-12 12:21:44
我想问的是,我的代码是否是错误编程的一个例子?
你的代码几乎是一样的。不同之处在于,您(正确地)使用花括号显式地声明代码块,而另一个示例则没有。一个问题是循环边界检查。
@Sriram还指出了这样一个事实,即您的循环使用a.Length - 1 - i,而后者只是检查b.Length - 1,这对您来说并不是必要的,并且会导致循环过早结束。使用第二个示例中的后一种方法。
除了您不应该在方法开始时使用_ (这只是一个命名转换)之外,您的算法是相同的。
https://stackoverflow.com/questions/30190701
复制相似问题