[洛谷]P1177 【模板】快速排序

洛谷P1177 【模板】快速排序 (归并排序) 题目描述 利用快速排序算法将读入的N个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。) 输入输出格式 输入格式: 第11行为一个正整数N,第2行包含N个空格隔开的正整数a i ,为你需要进行排序的数,数据保证了... 阅读详情

题目描述

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

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

输入格式

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

输出格式

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

输入输出样例

输入 #1复制

5
4 2 4 5 1

输出 #1复制

1 2 4 4 5

说明/提示

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

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

【思路】

1 取数组中间位置的点.作为标记数(防止快速排序相对有序的时候(毒瘤数据),时间复杂度退化成n方)。

2 从数组的左边找到一个大于标记数的数, 从数据右边找到一个小于标记数的数。

3 如果左边找到的数的位置小于右边找到数的位置, 交换两个数据。

4 如果左边的位置小于右边的位置。从2开始重复执行。

5 如果第四步结束了,说明找到了一个位置, 这个位置左边数都需要这个标记数, 右边数的值都大于这个标记数。

6 按第5步找到的位置,分别对左右两边的数据进行快速排序。

【代码】

#include <iostream>
#include <cstdio>
using namespace std;
const int N = 1e5+5;
int a[N];
int n;
void qsort(int l, int r) {
    if (l >= r) return ;
    int i = l - 1, j = r + 1, x = a[l + r >> 1];
    while(i < j) {
        // 不断的找左边大于x的值, 和右边小于x的值进行交换
        do i++; while(a[i] < x);
        do j--; while(a[j] > x);
        if(i < j) swap(a[i], a[j]);
    }
    // j 位置左边的值都小于x, 右边的值都大于x
    qsort(l, j),qsort( j + 1,  r);
}

int main() {
    cin >> n;
    for(int i = 0 ; i < n; i++) {
        scanf("%d", &a[i]);
    }
    qsort(0, n - 1);
    for(int i = 0 ; i < n ; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}

 

AVL_Cruise_interface\Simulink联合仿真 分享了AVL_Cruise通过interface模块与Simulink进行联合仿真的过程 阅读详情

相关推荐

优化求解器性能:当分支切割算法中的gap停滞不前时如何应对

本文深入探讨了当分支切割算法求解复杂整数规划问题时,gap停滞不前的根本原因与应对策略。文章指出gap停滞源于上界(找不到更优整数解)或下界(证明过程缓慢)提升受阻,并提供了从模型改写、自定义割平面、调整搜索策略到参数调优等一系列实战方法,帮助优化工程师有效打破求解僵局,推动gap下降。

weixin_29294597的博客 381

洛谷-P1177 【模板】快速排序

题目描述 利用快速排序算法将读入的NN个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。) 输入格式 第11行为一个正整数NN,第22行包含NN个空格隔开的正整数a_iai​,为你需要进行排序的数,数据保证了A_iAi​不超过10^9109。 输出格式 将给定的NN个数从小...

weixin_43098069的博客 1063

本地化搭建DeepSeek+RAGFlow,构建个人知识库

本地化搭建DeepSeek+RAGFlow,构建个人知识库。至少32G以上内存、500G以上空余磁盘空间。

gogospecter的专栏 7427

经典算法之快速排序

作者简介:大家好我是小唐同学(๑>؂

&volume的博客 710

CSP-J 初赛模拟卷1 题解

只有一棵子树有后继,其他的都是叶结点才能保证树的深度最大,此时还剩(n-5)个结点,最后加上2,得到(n-3),即为答案。题解:先修改p的指针域,让它的左指针域指向q,然后再让q的右指针域赋值给p的右指针域,再然后修改q的右指针域使其指向p,最后需要改变的指针域就是原先q结点的后继节点的左指针域内容。设n个元素的入栈序列是1,2,3,...,n,出栈序列为p1,p2,...,pn,若p1=n,则pi(1≤i≤n)的值为(1)输入的三个数中,第二个数应是[0,11]上的整数,否则会出现数组越界的问题。

Sat77GryHp_Pro的博客 2805

【DL经典回顾】距离度量大汇总(7-余弦距离(Cosine Distance))

余弦距离(Cosine Distance)衡量的是两个向量在方向上的差异性,而不是在大小上的差异。

悦学共鸣,温柔以待,汇聚光芒,共同成长 2579

(洛谷)第二个题组题解

P1177 【模板】快速排序 题目描述 利用快速排序算法将读入的 NN 个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++ 选手请不要试图使用 STL,虽然你可以使用 sort 一遍过,但是你并没有掌握快速排序算法的精髓。) 输入格式 第 11 行为一个正整数 NN,第 22 行包含 NN 个空格隔开的正整数 a_iai​,为你需要进行排序的数,数据保证了 A_iAi​ 不超过 10^9109。 输出格式

weixin_63638351的博客 1649

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

wzk4869的博客 3022

P1177 【模板】快速排序

P1177 【模板】快速排序 题目描述 利用快速排序算法将读入的NN个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。) 输入格式 第11行为一个正整数NN,第22行包含NN个...

胡小涛的博客 423

YOLO26涨点改进 | 损失函数改进篇 | 引入SlideLoss,适配尺度变化+遮挡+难易样本不平衡,手把手配置+实战案例

COCO-Hard是COCO数据集的复杂场景子集,包含80个类别,重点筛选多尺度、遮挡密集样本,其中小尺度目标(<32×32像素)占比42%,大尺度目标(>128×128像素)占比28%,遮挡目标占比57%,场景涵盖人群密集、车流拥堵、复杂工业环境,完美模拟真实复杂检测场景,适合验证SlideLoss的适配性。

qq_36130719的博客 157

Innovus: dbGet 快速学习教程

是取反的意思,如下例子,这个选中的instance一共四个pin,当用regexp筛选CK pin后只获得CK pin,加上-v取反后就返回的值就是除CK pin以外的其他三个pin。dbGet有很多option,具体都是干嘛的,怎么用,做个简单介绍。,-p是最常用的option,-p和-p0 -p1是一个东西,-p x它代表从后往前推第x个选项,与-p搭配使用的pattern也是必须的。的意思是返回database整数,而一般我们用的是浮点数,database整数可以参考DEF里的单位去输出。

m0_61544122的博客 6957

[洛谷]快速排序

1

m0_75125820的博客 205

2025年抖音面试:商业生态与安全质量运营技能要求及面试

在商业生态与安全岗的质量运营工作中,规则运营职责占据着极为重要的地位,它是保障内容风控质量的关键环节。

王国平的博客 608

洛谷P1177 【模板】排序(快速排序)

这题用冒泡排序和sort都会超时,这里用快速排序模板。

Questionable_的博客 388

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【题解】洛谷P1177[模板]快速排序

题目链接 复习一波模板 #include&amp;lt;cstdio&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; #define _rep(i,a,b) for(int i=(a);i&amp;lt;=(b);i++) const int N=1e5+10; int a[N]; void qsort(int l,int r) { int m...

翻过这座山,他们就会听到你的故事 367

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【洛谷】P1177 【模板】快速排序 题解

题目描述 利用快速排序算法将读入的NN个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。) 输入格式 第11行为一个正整数NN,第22行包含NN个空格隔开的正整数a_ia**i,为你需要进行排序的数,数据保证了A...

Samven_7的博客 4024

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【洛谷】P1177 【模板】快速排序

题目地址: https://www.luogu.com.cn/problem/P1177 快速排序模板题,所以直接抄模板了。。。 #include <iostream> using namespace std; const int N = 1e6+10; int n; int q[N]; void quick_sort(int q[], int l, int r) { ...

数学、算法爱好者的博客 312

洛谷—题解 P1177 【模板】快速排序

原题链接P1177 【模板】快速排序 题目描述 利用快速排序算法将读入的N个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。) 输入输出格式 输入格式: 第1行为一个正整数N,第2行包含N个空格隔开的正整数ai,为你需...

qq_41616301的博客 825

洛谷——P1177 【模板】快速排序

题目描述 利用快速排序算法将读入的NN个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。) 输入输出格式 输入格式: 第11行为一个正整数NN,第22行包含NN个空格隔开的正整数a_iai​,为你...

猪の成长日记 284

洛谷 P1177 【模板】快速排序

洛谷 P1177 【模板】快速排序 1.翻书,该题很容易解决,但不算掌握。 2.凭空编写,边界点的取值有些问题,等号去还是不取。 3.想了一个办法,写出一组数据进行手动模拟,弄明白了,程序再开始根据模拟进行编制。 4.很久没写快排了,如果能一次性编写成功,这次可以说快排掌握了。 5.开始动手,。

mrcrack的博客 2082

洛谷P1177【【模板】快速排序】

【模板】快速排序 题目 利用快速排序算法将读入的 NN 个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++C++ 选手请不要试图使用 STL,虽然你可以使用 sort 一遍过,但是你并没有掌握快速排序算法的精髓。) 输入格式 第1行为一个正整数N,第2行包含N个空格隔开的正整数ai,为你需要进行排序的数,数据保证了Ai不超过10^9。 输出格式 将给定的N个数从小到大输出,数之间空格隔开,行末换行且无空格。 Sampl

zhanglili1597895的博客 3212

洛谷P1177 【模板】快速排序

洛谷P1177 【模板】快速排序 这道题考察的是快速排序,但是要注意初始元素的选择,一开始我使用左边界的元素作为起始元素,运行的结果是三个TLE,因为如果一开始数组就是有序的,如果再使用传统快排(每次划分都得到最坏的结果),造成时间复杂度过大,所以,可以选取中间值作为枢轴元素。 #include<iostream> using namespace std; const int N = 1e5+10; int n; int q[N]; void quick_sort(int q[],in

qq_44653420的博客 788

【快速排序】【模板】洛谷P1177

输入 5 4 2 4 5 1 输出 1 2 4 4 5 找一个点temp,每次都把小于它的放它左边,大于它的放它右边 时间复杂度最大N2,最小NlogN #include<iostream> #include<math.h> #include<algorithm> #include<string.h> using namespace std; int...

寻找秀儿的博客 308

P1177 【模板】快速排序(洛谷)

原题传送门 思路:快排模板题 代码参考 在这里插入代码片

Bertil的博客 473

[洛谷 P1177] 【模板】快速排序

题目描述 利用快速排序算法将读入的NN个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。) 输入格式 第11行为一个正整数NN,第22行包含NN个空格隔开的正整数a_iai​,为你需要进行排序的数,数据保证了A_iAi​不超过10^9109。 输出格式 将给定的NN个数从小...

... 699
上一篇: 【洛谷】P1803 凌乱的yyy / 线段覆盖
下一篇: ACM/IOI 历年国家集训队论文集和论文算法分类整理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值