——快速排序

快速排序

基本思路

选取中间位置为基准从两边开始遍历,(这里以从小到大为例)左边·遇到第一个大于基准数的记录下标,右边遇到第一个小于基准数的记录下标,然后交换这两个数,重复以上操作直至到达中间位置(***说明一下为啥选取中间位置为基准,假如选取第一位数为基准,假如右边的都比他小,运算量增大,这样时间复杂度会变高)***然后,以基准数为分界线,将区间分成两部分,每个区间重复以上操作。

以洛谷P1177 【模板】排序为例

将读入的 N 个数从小到大排序后输出。

输入格式

第一行为一个正整数 N

第二行包含 N 个空格隔开的正整数 a i,为你需要进行排序的数。

输出格式

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

若不选取中间数为基准便会超时。

代码如下:

#include<bits/stdc++.h>

using namespace std;

const int N=1e6+30;

int kN;

void kp(int l,int r)

{

if(l>r)return ;//排序完成结束条件

int re=r,le=l;

int te=k(r+l)/2;//选取基准数

while(le<=re)

{

while(kle<te)le++;

while(kre>te)re--;

if(le<=re)

{

swap(kle,kre);

le++;re--;

}

}

kp(l,re);

kp(le,r);

}

int main()

{

int n;cin>>n;

for(int i=0;i<n;i++)

cin>>ki;

kp(0,n-1);

for(int j=0;j<n-1;j++)

cout<<kj<<" ";

cout<<kn-1<<endl;

return 0;

}

相关推荐
302wanger6 分钟前
蛋炒饭周刊 · 第 1 期(2026-09-07至2026-09-11)
算法
一木 之林16 分钟前
第 3 节 在 AI 行业中,C/C++ 编程中的动态库和静态库
c语言·c++·后端
库玛西17 分钟前
深度解构高并发利器:纯事件驱动 Reactor 模式的设计哲学与工程实践
服务器·开发语言·c++·笔记·tcp/ip
shehuiyuelaiyuehao24 分钟前
算法43,外观数列,模拟算法+双指针
java·算法
linx29532 分钟前
单元五 · 对称认知·下:编译与链接
linux·c语言·开发语言·c++·嵌入式硬件
alphaTao36 分钟前
LeetCode 每日一题 2026/9/7-2026/9/13
算法·leetcode
kanhaoning40 分钟前
Agent 记忆出现重复和矛盾怎么优化:我实测了6种去重和更新策略,找到了低成本维护记忆质量的方法
算法
hans汉斯43 分钟前
【计算机科学与应用】层级评论上下文依赖识别数据集构建与研究——以小红书旅游评论数据为例
人工智能·算法·yolo·目标检测·cnn·旅游
C++ 老炮儿的技术栈1 小时前
西门子 S7 常用存储区(I/Q/M/T/C/DB/PI/PQ)
linux·开发语言·c++·windows·qt·io