我的代码有什么问题?这是在C中使用递归的bubbleSort

时间:2019-01-12 00:13:52

标签: c arrays pointers recursion

当我调用我的冒泡排序对策函数数组未排序时出现问题。

Hello Alice
Hello Bob
Hello Rick
Your age is  None
Hello John
Your age is  30

实际输出:5,4,3,2,1,

预期输出:1、2、3、4、5,

1 个答案:

答案 0 :(得分:2)

if(vidx == n)
    bubble(arr,n-1,0);
    return;

这就是为什么我主张始终使用大括号 的原因。照原样,该代码等效于:

if(vidx == n){ bubble(arr,n-1,0); }
return;

bubble函数的主体大部分无法访问。

编辑:顺便说一句,我注意到剩下的两个错误:

  • vidx可以达到数组的长度,因此vidx+1的索引将超出末尾,这可能会导致问题
  • 当您击中两个彼此相对顺序正确的相邻元素(即*(arr+vidx) <= *(arr+vidx+1))时,无需进行进一步递归即可将其放到函数结尾,从而过早停止排序。