我无法在下面愚蠢的递归气泡排序代码中找到错误。有人可以告诉它为什么不能正常工作吗?提前致谢。递归气泡排序C
#include <stdio.h>
int b[8] = { -9, 9, 89, 78, 56, 45, 34, 89 };
void print(int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d\t", b[i]);
printf("\n");
}
void rb(int n)
{
if(n == 0)
return;
int i, j;
for (i = 0; i < n - 1; i++) {
if (b[i + 1] > b[i])
j = b[i + 1];
b[i + 1] = b[i];
b[i] = j;
}
rb(n - 1);
}
int main()
{
print(8);
rb(8);
print(8);
return 0;
}
执行交换的3个语句需要放在'{...}'中,这样它们全部由'if'来管理。如果你打算把数字按升序排列,那么'if'测试也是落后的。 –
我质疑重新缩进编辑的有用性,当最初的误导性(通常很糟糕)缩进首先被认为是问题的一部分时。 –
是的,我怎么会错过括号...愚蠢的...极其糟糕的问题。 –