快速排序 刷题笔记

思路 

分治+双指针 

在每个区间选定一个基准目标 

两个指针从数组的两边向中间推进 

使用

while循环判断

 do {i++;}while(q[i]<x); 
 do{j--;}while(q[j]>x);

每次这样做完就会找到q[i]>x,,,,q[j]小于x

此时我们交换 q[i] ,q[j]于是小于x的数分到了小于x的一侧 大于x的数分到了大于x的一侧

while(i<j){

        do {i++;}while(q[i]<x); 
        do{j--;}while(q[j]>x);


        if(i<j){swap(q[i],q[j]);}
    }

当做完这整个while 循环  就会形成所有小于 x的数在x一侧 而大于x的数在另一侧

在这个基础上 我们 不断划分区间 调整每一个局部区间 的顺序 从而达到整体有序

代码

#include<iostream>
using namespace std;
const int N = 100010;

int q[N];
void quick_sort(int q[],int l,int r){
    if(l>=r){
        return ;}
    int i=l-1,j=r+1,x=q[l+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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/742369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10个必知必会的SQL聚合函数

掌握十大必备的SQL聚合函数&#xff0c;助你成为数据分析高手&#xff01; 目录 掌握十大必备的SQL聚合函数&#xff0c;助你成为数据分析高手&#xff01;1. COUNT()&#xff1a;计算表中行的数量2. SUM()&#xff1a;计算表中某个数值列的总和3. AVG()&#xff1a;计算表中某…

隐马尔可夫模型(HMM) |暴力算法 |一个简单的例子说清计算过程 |一般步骤总结

如是我闻: 本文通过一个简单的例子来详细说明隐马尔可夫模型(HMM)的暴力算法 我们求解的问题是&#xff1a;给定模型及观测序列计算其出现的概率。 隐马尔可夫模型由三个主要部分组成&#xff1a; 隐藏状态集合观测状态集合以及三个概率矩阵&#xff08;状态转移概率矩阵、观…

24计算机考研调剂 | 中科院(深圳)

2024中科院深圳方鹏课题组考研调剂招生信息发布&#xff08;0854电子/计算机/生医工/0856材料&#xff09; 考研调剂招生信息 学校:中科院 专业:工学->电子科学与技术 年级:2024 招生人数:3 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式仅限APP…

window安装Docker

Windows上安装Docker 安装Docker的大体上的步骤 需要打开hyper-v 为什么要打开Hyper-v&#xff1f; 在Windows 10上安装Docker需要打开Hyper-V&#xff0c;主要是因为Docker上的Windows容器可以在两种不同的运行时隔离模式下运行&#xff1a;进程隔离和Hyper-V隔离。尽管在未使…

第十五单元日考技能

文章目录 第十五单元1.编写一个基于对象的程序&#xff0c;求长方体的体积&#xff0c;要求&#xff1a;2.编写strcpy函数&#xff08;10分&#xff09;3.建立一个类String,连接两个字符串后。具体要求&#xff1a; 第十五单元 1.编写一个基于对象的程序&#xff0c;求长方体的…

《详解:鸿蒙NEXT开发核心技术》

我们现在都知道鸿蒙作为一个国产的全栈自研系统&#xff0c;经过国家主推后。已经引起人们很大的关注&#xff0c;其中作为开发者来说&#xff1b;许多一线大厂已经与其华为鸿蒙展开原生应用的合作了&#xff0c;目前了解到已经有200家。而之后出现了很多的高薪鸿蒙开发岗位&am…

【数据库-黑马笔记】基础-SQL

本文参考b站黑马数据库视频,总结详细全面的笔记 ,可结合视频观看1~26集 MYSQL 的基础知识框架如下 目录 一、MYSQL概述 1、数据库相关概念 2、MYSQL的安装及启动 二、SQL 1、DDL【Data Defination】 2、DML【Data Manipulation】 ①、插入 ②、更新和删除 3、 DQL【Data…

DAY by DAY 史上最全的Linux常用命令汇总----history游览历史

history游览历史 当系统执行过一些命令后&#xff0c;可按上下键翻看以前的命令&#xff0c;history将执行过的命令列举出来 history保留了最近执行的命令记录&#xff0c;默认可以保留1000。 历史清单从0开始编号到最大值。 常见用法&#xff1a; history N 显示最近…

Linux本地搭建FastDFS系统

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

Redis 中的 redis-cli 详解和参数介绍

redis-cli 要了解redis-cli的全部参数&#xff0c; 可以执行 redis-cli-help 命令来进行查看 -r -r&#xff08;repeat&#xff09; 选项代表将命令执行多次 例如下面操作将会执行三次 ping 命令 $ redis-cli -r 3 ping PONG PONG PONG -i -i&#xff08;interval&…

320: 鸡兔同笼(python)

题目描述 一个笼子里关了鸡和兔&#xff08;鸡有2只脚&#xff0c;兔又4只脚&#xff0c;没有例外&#xff09;。已知笼子里面脚的总数a&#xff0c;问笼子里面至少有多少只动物&#xff0c;至多有多少只动物&#xff1f; 输入 多组测试数据。第一行是测试数据的组数n&#…

nginx多级代理配置获取客户端真实ip

流量路径 #mermaid-svg-NX785p8k6RVBngHY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NX785p8k6RVBngHY .error-icon{fill:#552222;}#mermaid-svg-NX785p8k6RVBngHY .error-text{fill:#552222;stroke:#552222;}#…

jenkins部署go应用 基于docker-compose

丢弃旧的的构建 github 拉取代码 指定go的编译版本 安装插件 拉取代码是排除指定的配置文件 比如 conf/config.yaml 文件 填写配置文件内容 比如测试环境一些主机信息 等 可以配置里面 构建的时候选择此文件替换开发提交的配置文件。。。。 编写docker-compose 文件 docker…

android metaRTC编译

参考文章&#xff1a; metaRTC3.0稳定版本编译指南_metartc 编译-CSDN博客 源码下载&#xff1a; Releases metartc/metaRTC GitHub 版本v6.0-b4即可

短视频解析接口分发系统

宝塔面板&#xff1a;Nginx系统 php7.2 Mysql 5.6-5.7 伪静态Thinkphp 上传文件直接访问域名安装即可 可以自备 听说后边要出saas去水印小程序 下载地址&#xff1a;https://pan.xunlei.com/s/VNskSEelfRVIzoSm5P5Rcw34A1?pwdqzhh# 接口演示&#xff1a; 前端演示…

C#编写函数

C#函数是一段可重复使用的代码块&#xff0c;用于执行特定的任务。它们可以接受输入参数并返回结果。在C#中&#xff0c;函数定义包括函数名、返回类型、参数列表和函数体。 public static int Add(int a, int b) {int sum a b;return sum; }在这个示例中&#xff0c;函数名…

解决ipconfig不是内部或外部命令,也不是可运行的程序或批处理文件

问题所示&#xff1a;ipconfig不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 解决办法如下: 1.右击此电脑&#xff0c;点击属性设置&#xff1a; 2.点击高级系统设置 3.点击进入环境变量 4.在系统变量中进行设置&#xff0c;双击PATH进行配置 5.点击新建&am…

2024-Android大厂(字节跳动,腾讯

PS&#xff1a;全文点击蓝色文字&#xff0c;即可跳转链接 【字节面试官&#xff1a;看了3000多份简历&#xff0c;面试1000场后&#xff0c;想给金九银十找工作的程序员几点建议附大厂真题面经】 本文主要介绍校招&#xff0c;上半年疫情原因真正面试的时间和机会也不多&#…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测软件(Python+PySide6界面+训练代码)

摘要&#xff1a;开发高效的零售柜商品识别系统对于智能零售领域的进步至关重要。本文深入介绍了如何运用深度学习技术开发此类系统&#xff0c;并分享了全套实现代码。系统采用了领先的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5进行了性能比较&#xff0c;呈现了诸如…

FDU 2021 | 二叉树关键节点的个数

文章目录 1. 题目描述2. 我的尝试 1. 题目描述 给定一颗二叉树&#xff0c;树的每个节点的值为一个正整数。如果从根节点到节点 N 的路径上不存在比节点 N 的值大的节点&#xff0c;那么节点 N 被认为是树上的关键节点。求树上所有的关键节点的个数。请写出程序&#xff0c;并…