这个实现是糟糕的编程吗?
Is this implementation bad programming?
我在学校为冒泡排序练习制作了以下算法。
//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" 循环如下。我的是嵌套 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
}
我想问的是我的代码是不是编程不好的例子?还是我的大脑工作方式与你们计算机科学专业的人不同?顺便说一句,如果你想知道的话,我是文科学生。
What I want to ask is my code is an example of bad programming or not?
您的代码几乎相同。不同之处在于您(正确地)使用大括号来显式声明代码块,而另一个示例则不是。一个问题是您的 循环边界检查 .
@Sriram 还指出您的循环使用 a.Length - 1 - i
而后者只是检查 b.Length - 1
,这对您而言实际上不是必需的,并且会导致循环过早结束.使用第二个示例中的后一种方法。
除了您不应该在方法的开头使用 _
(这只是命名转换)之外,您的算法是相同的。
我在学校为冒泡排序练习制作了以下算法。
//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" 循环如下。我的是嵌套 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
}
我想问的是我的代码是不是编程不好的例子?还是我的大脑工作方式与你们计算机科学专业的人不同?顺便说一句,如果你想知道的话,我是文科学生。
What I want to ask is my code is an example of bad programming or not?
您的代码几乎相同。不同之处在于您(正确地)使用大括号来显式声明代码块,而另一个示例则不是。一个问题是您的 循环边界检查 .
@Sriram 还指出您的循环使用 a.Length - 1 - i
而后者只是检查 b.Length - 1
,这对您而言实际上不是必需的,并且会导致循环过早结束.使用第二个示例中的后一种方法。
除了您不应该在方法的开头使用 _
(这只是命名转换)之外,您的算法是相同的。