我無法在下面愚蠢的遞歸氣泡排序代碼中找到錯誤。有人可以告訴它爲什麼不能正常工作嗎?提前致謝。遞歸氣泡排序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'測試也是落後的。 –
我質疑重新縮進編輯的有用性,當最初的誤導性(通常很糟糕)縮進首先被認爲是問題的一部分時。 –
是的,我怎麼會錯過括號...愚蠢的...極其糟糕的問題。 –