当前位置: 首页 > news >正文

——快速排序

快速排序

基本思路

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

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

将读入的 N 个数从小到大排序后输出。
输入格式
第一行为一个正整数 N
第二行包含 N 个空格隔开的正整数 a i,为你需要进行排序的数。
输出格式
将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。
若不选取中间数为基准便会超时。
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+30;
int k[N];
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(k[le]<te)le++;
while(k[re]>te)re–;
if(le<=re)
{
swap(k[le],k[re]);
le++;re–;
}
}
kp(l,re);
kp(le,r);
}
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
cin>>k[i];
kp(0,n-1);
for(int j=0;j<n-1;j++)
cout<<k[j]<<" ";
cout<<k[n-1]<<endl;
return 0;
}

相关文章:

  • SpringCloud Gateway 打印请求响应日志、跨域全局配置
  • 2024!再见前端!
  • 网络编程(8)+字节序处理
  • Redis 五大基本数据类型及其应用场景进阶(缓存预热、雪崩 、穿透 、击穿)
  • SpringCloud-Netflix第一代微服务快速入门
  • u盘拷贝文件管控怎么设置?禁止往U盘拷贝文件的8种方法!(图文详解)
  • Java面试题真题·人才招聘系统项目介绍
  • autogen改变屏幕亮度
  • VMware搭建DVWA靶场
  • 【Vue】为什么 Vue 不使用 React 的分片更新?
  • 如何提升网页加载和跳转速度:Flask 模板渲染 vs Nginx 静态资源处理
  • 第二百五十五节 JPA教程 - JPA 多对多连接表示例
  • Springboot + netty + rabbitmq + myBatis
  • C++冷门知识点1
  • jeesite集成redis,redis工具类
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 08.Android之View事件问题
  • 0基础学习移动端适配
  • AWS实战 - 利用IAM对S3做访问控制
  • ES10 特性的完整指南
  • idea + plantuml 画流程图
  • interface和setter,getter
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript函数式编程(一)
  • JWT究竟是什么呢?
  • Laravel核心解读--Facades
  • MySQL的数据类型
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 初识 webpack
  • 分类模型——Logistics Regression
  • 工作中总结前端开发流程--vue项目
  • 欢迎参加第二届中国游戏开发者大会
  • 力扣(LeetCode)357
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 那些被忽略的 JavaScript 数组方法细节
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 深入浏览器事件循环的本质
  • 王永庆:技术创新改变教育未来
  • 一份游戏开发学习路线
  • 进程与线程(三)——进程/线程间通信
  • 数据可视化之下发图实践
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (C语言)fread与fwrite详解
  • (C语言)字符分类函数
  • (二)测试工具
  • (二十六)Java 数据结构
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (三十五)大数据实战——Superset可视化平台搭建
  • (学习总结)STM32CubeMX HAL库 学习笔记撰写心得
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)