快速排序板子(备战蓝桥杯)

题目:

活动 - AcWing

蓝桥杯省赛无忧班(C&C++ 组)第 4 期_蓝桥杯 - 蓝桥云课

【模板】排序 - 洛谷

板子:

复制代码
void quick_sort(int q[] , int l , int r)
{
    if(l >= r) return ;

    //这里的x 尽量折半查找 不然找左区间或者右区间可能会卡测试样例
    int x = q[l + r >> 1] , i = l - 1 ,j = r + 1;

    while(i < j)
    {
        do i++; while(q[i] < x);
        do j--; while(q[j] > x);

        if(i < j) swap(q[i],q[j]);
    }

    quick_sort(q,l,j);
    quick_sort(q,j+1,r);
}

题解:

复制代码
#include<cstdio>
#include<iostream>
#include<algorithm>

using namespace std;

const int N = 1e6 + 10;
int n;
int q[N];

void quick_sort(int q[] , int l , int r)
{
    if(l >= r) return ;

    //这里的x 尽量折半查找 不然找左区间或者右区间可能会卡测试样例
    int x = q[l + r >> 1] , i = l - 1 ,j = r + 1;

    while(i < j)
    {
        do i++; while(q[i] < x);
        do j--; while(q[j] > x);

        if(i < j) swap(q[i],q[j]);
    }

    quick_sort(q,l,j);
    quick_sort(q,j+1,r);
}

int main()
{
    scanf("%d",&n);

    for(int i = 0 ; i < n ; i++) scanf("%d",&q[i]);

    quick_sort(q,0,n-1);

    for(int i = 0 ; i < n ; i++) printf("%d ",q[i]);
    return 0;
}
相关推荐
dialect_5 小时前
KMP算法
开发语言·c++·算法
ShineWinsu7 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
傲世仙尊7 小时前
多态-虚表才活到运行期符号表早已消失
c++
chenbingjie_c7 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
是main不是漫7 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
·present·7 小时前
CSAPP(Bomb lab)
c语言·c++
王老师青少年编程7 小时前
2026年信奥赛c++普及组csp-j第二轮复赛真题
c++·真题·csp·信奥赛
时间的拾荒人9 小时前
CMake 常用命令详解:从版本声明到安装部署
c++·面试
D e re k ZH11 小时前
P5025 [SNOI2017] 炸弹
c++·算法
wuminyu12 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++