排序算法——快速排序

排序算法——快速排序,第1张

排序算法——快速排序

实现代码:

//以第一个元素为主元
//如果以最后一个元素为主元,指针的初始化以及返回情况有些不同
int partition(vector &data, int l, int r)
{
    int main = 0;
    int i = 0; //维护主元左边的值的指针
    int j = 0; //迭代器

    if(l >= r)
        return l;
    
    i = l;
    main = data[l];
    for(j = l+1; j <= r; j++)
    {
        if(data[j] <= main)
        {
            i++;
            swap(data[i],data[j]); //i,j如果(i++)之前是相邻的,那么其实是没有交换

        }

    }
    swap(data[i], data[l]);

    return i;
}

void quick_sort(vector &data, int l, int r)
{
    if(l < r)
    {
        int q = partition(data, l, r);
        quick_sort(data, l, q - 1);
        quick_sort(data, q + 1, r);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670581.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存