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

题目:

活动 - 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;
}
相关推荐
码农小韩5 小时前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
linweidong6 小时前
C++ 中避免悬挂引用的企业策略有哪些?
java·jvm·c++
CoderCodingNo6 小时前
【GESP】C++五级/四级练习(双指针/数学) luogu-P1147 连续自然数和
开发语言·c++·算法
Q741_1476 小时前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(2) 作答语言:C/C++ 哈夫曼编码 LRU
c语言·数据库·c++·算法·笔试·哈夫曼编码·哈夫曼树
Z1Jxxx6 小时前
日期日期日期
开发语言·c++·算法
报错小能手6 小时前
nginx集群聊天室(一) 初步讲解集群聊天室所需库的搭建
c++·nginx
mjhcsp6 小时前
C++ 后缀树(Suffix Tree):原理、实现与应用全解析
java·开发语言·c++·suffix-tree·后缀树
_OP_CHEN6 小时前
【算法基础篇】(四十五)裴蜀定理与扩展欧几里得算法:从不定方程到数论万能钥匙
算法·蓝桥杯·数论·算法竞赛·裴蜀定理·扩展欧几里得算法·acm/icpc
mjhcsp6 小时前
C++ 有限状态自动机(FSM):原理、实现与应用全解析
开发语言·c++·有限状态自动机
mjhcsp7 小时前
C++ KMP 算法:原理、实现与应用全解析
java·c++·算法·kmp