栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

P1177 【模板】快速排序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

P1177 【模板】快速排序

题目描述

利用快速排序算法将读入的 NN 个数从小到大排序后输出。

快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++ 选手请不要试图使用 STL,虽然你可以使用 sort 一遍过,但是你并没有掌握快速排序算法的精髓。)

输入格式

第 11 行为一个正整数 NN,第 22 行包含 NN 个空格隔开的正整数 a_iai​,为你需要进行排序的数,数据保证了 A_iAi​ 不超过 10^9109。

输出格式

将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。

输入输出样例

输入 #1复制

5
4 2 4 5 1

输出 #1复制

1 2 4 4 5
说明/提示

对于 20%20% 的数据,有 Nleq 10^3N≤103;

对于 100%100% 的数据,有 Nleq 10^5N≤105。

学的y总模板,没什么好说的,y总yyds。

#include 

using namespace std;

const int N = 100005;
int q[N];

void quick_sort(int q[] , int l , int r){
    if(l >= r) return;
    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(){
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i) cin >> q[i];
    quick_sort(q , 0 , n - 1);
    for (int i = 0; i < n; ++i) cout << q[i] << " ";
    return 0;
}

P1177 【模板】快速排序

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913350.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号