大家帮我看下,我的这个快速排序为什么会陷入死循环啊.
发布网友
发布时间:2023-11-26 13:24
我来回答
共1个回答
热心网友
时间:2024-04-05 10:00
if (l==r)
{
qsort(array,ll,r); <= 这一句。 如果r等于rr的话就进入死循环了。这完全有可能,只要最右边的数是最大的就可以了。
qsort(array,l+1,rr);
}
同样的, 另一个分支里qsort(array,ll,r); qsort(array,l,rr); 这两句都有这种风险。
一般的做法是,接下来的调用中不包括那个“基准点”,因为它的位置已经确保是正确的了(左边的都小于它,右边的都大于它)。 这样就可以确保每递归一层都会有“进展”, 就不会再这里陷入死循环了