首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用指针进行快速排序

使用指针进行快速排序
EN

Code Review用户
提问于 2013-05-22 18:00:29
回答 1查看 5.3K关注 0票数 4

作为练习,我用C编写了使用指针的快速排序算法。请评论并帮助我找到破案的情况(如果有的话)。

代码语言:javascript
复制
void qsort(int *, int, int);
void swap(int *, int *);

void qsort(int *v, int left, int right)
{
    int i, *last;

    if (right <= left)
        return;
    last = v + left; //choosing the first element as the pivot
    for (i = left + 1; i <= right; i++)
        if (*(v + i) < *(v + left))
            swap(++last, v + i); //swapping the numbers < pivot
    swap(v + left, last);
    qsort(v, left, last - v - 1); //sub-array containing numbers < pivot
    qsort(v, last - v + 1, right); //sub-array containing numbers >= pivot
}

void swap(int *i, int *j)
{
    int temp;

    temp = *i;
    *i = *j;
    *j = temp;
}
EN

回答 1

Code Review用户

发布于 2013-05-22 20:48:45

我会修改一个排他性的,而不是包含性的上限,即写i < right而不是i <= rightlast - v而不是last - v - 1

这样做的优点是使基本调用qsort(v, 0, length)而不是qsort(v, 0, length - 1)

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/26483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档