gpt4 book ai didi

c - C中的递归冒泡排序

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:32 24 4
gpt4 key购买 nike

我找不到下面愚蠢的递归冒泡排序代码中的错误。有人能说出为什么它不能正常工作吗?提前致谢。

#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;
}

最佳答案

for 循环中的 if 语句实际上如下所示,需要在执行交换的三行代码周围添加“{”和“}”。此外,由于 j 仅用于代码的交换部分。如果您在“if” block 内设置了“j”范围。编译器会发现这个问题。

void rb(int n)
{
if(n==0)
return;
int i;
for(i=0;i<n-1;i++)
{
if(b[i+1]>b[i]) {
/* swap the two values and scope j as tightly as possible */
int j=b[i+1];
b[i+1]=b[i];
b[i]=j;
}
}
rb(n-1);
}

关于c - C中的递归冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20009837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com