基础算法-快速排序

基本思想——分治

分治是指就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
很多的排序问题大多都是使用分治的思想来进行解决。

实现步骤

确定分界点,有四种情况:数列最左端、数列最右端、数列中间和随机位置。
将整个区间根据分界点值划分为小于分界点和大于分界点两部分。
分别对左右两段进行递归处理。

题目描述

给定你一个长度为 n 的整数数列。
请你使用快速排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。

输入格式
输入共两行,第一行包含整数 n。
第二行包含 n 个整数(所有整数均在 1∼1e9 范围内),表示整个数列。

输出格式
输出共一行,包含 n 个整数,表示排好序的数列。

数据范围
1≤n≤100000

输入样例
5
3 1 2 4 5

输出样例
1 2 3 4 5

实现代码
1. 模板
 

#include <bits/stdc++.h>
using namespace std;const int N=100010;
int n;
int q[N];
void quick_sort(int q[],int l,int r)
{if(l>=r){return;}else{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()
{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]<<" ";}system("pause");return 0;
}

2. STL

sort(x, y)详解
  • 头文件:algorithm。
  • 功能:对数组从起点 x 到终点 y 进行从小到大的升序排列。
  • 注意:sort默认为升序排列,但是也可以自己添加自定义函数比较器,按制定规则进行比较。
  • #include <bits/stdc++.h>
    using namespace std;const int N=100010;
    int q[N];
    int main()
    {int n;cin>>n;for(int i=0;i<n;i++){cin>>q[i];}sort(q,q+n);for(int i=0;i<n;i++){cout<<q[i]<<" ";}system("pause");return 0;
    }
    

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

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

相关文章

Elasticsearch:使用 ELSER v2 文本扩展进行语义搜索

Elastic 提供了一个强大的 ELSER 供我们进行语义搜索。ELSER 是一种稀疏向量的搜索方法。我们无需对它做任何的微调及训练。它是一种 out-of-domain 的模型。目前它仅对英文进行支持。希望将来它能对其它的语言支持的更好。更多关于 ELSER 的知识&#xff0c;请参阅文章 “Elas…

MySql——1146 - Table‘mysql.proc‘doesn‘t exit是这个

项目场景&#xff1a; 做自己的小项目需要连接mysql数据库 问题描述 点击数据库时报错 1146 - Table’mysql.proc’doesn’t exit 原因分析&#xff1a; 误删原生的mysql数据库 解决方案&#xff1a; 重新安装装部署mysql就好了 注意不要轻易删除原生的东西

day55 算法训练|动态规划part15

392.判断子序列 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的…

react学习第一天

脚手架的创建 1.创建环境变量 npm init -y 2.创建node-modules npm add -D create-react-app 3.创建脚手架 npx create-react-app react-demo1 报错一号 报错原因&#xff1a;node版本太低 解决&#xff1a;升级版本 nvm install 14.0.0 nvm use 14.0.0 报错二号 报错原因&…

单元测试:无返回值接口单元测试

在平常的工作中&#xff0c;我们经常会用到单元测试&#xff0c;那么&#xff0c;单元测试应该怎么写呢&#xff1f;有什么需要注意的地方呢&#xff1f; 比如保存&#xff0c;数据是否保存成功&#xff0c;我们应该用单元测试怎么断言呢&#xff1f;像保存完成后&#xff0c;再…

牛客网SQL训练5—SQL大厂面试真题

文章目录 一、某音短视频1.各个视频的平均完播率2.平均播放进度大于60%的视频类别3.每类视频近一个月的转发量/率4.每个创作者每月的涨粉率及截止当前的总粉丝量5.国庆期间每类视频点赞量和转发量6.近一个月发布的视频中热度最高的top3视频 二、用户增长场景&#xff08;某度信…

git上传代码到github远程仓库

1、添加SSH公钥 为了把本地的仓库传到github&#xff0c;还需要配置ssh key&#xff0c;说白了就是为了把本地的代码上传到github。 1、前置准备 本地需要安装git&#xff1a;Git - Downloads。安装成功后本地右键鼠标会多出一些git选项。 2、添加SSH Key 首先在本地创建s…

红队打靶练习:MISDIRECTION: 1

信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.12.128 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.12.1 00:50:56:c0:00:08 …

数据结构(C)

基础知识 数据是所有能被输入计算机中&#xff0c;且能被计算机处理的符号的集合数据元素是数据的基本单位数据项是独立含义的数据最小单元数据对象是独立含义最小单位数据对象是指性质相同的数据元素的集合数据结构是带结构的数据元素的集合主要讨论数据之间的相邻关系或者邻…

Linux环境下OpenSSH升级到 OpenSSH_9.5p1(内置保姆级教程)

我最近在修复服务器的openssh漏洞的时候是服务器生产环境&#xff0c;自己在做的时候&#xff0c;就遇到的重启之后直接断掉ssh的连接&#xff0c;最后发现原因是没配置sshd_config的允许远程用户登录&#xff0c;因此&#xff0c;在此记录一下升级openssh的操作步骤&#xff0…

Rosalind 036 Matching Random Motifs

题目背景&#xff1a; 这个问题要求我们计算在一组随机生成的DNA字符串中&#xff0c;至少有一个字符串与给定的基序&#xff08;特定的DNA序列&#xff09;相匹配的概率。这些DNA字符串的随机生成受到给定的GC含量的控制&#xff0c;这是指DNA中要么是鸟嘌呤&#xff08;G&am…

算法基础之能被整除的数

能被整除的数 核心思想&#xff1a; 容斥原理 总面积 1-23-4…. 总集合元素中个数 1-23-4…. #include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N 20;typedef long long LL;int p[N];int main(){int n,m;cin&…

【C++设计模式 -- 单例(Singleton)模式】

C 单例&#xff08;Singleton&#xff09;模式 单例模式什么是单例模式单例模式的特点为什么要使用单例模式单例模式的缺点 单例模式实现懒汉式&#xff08;Lazy Initialization&#xff09;方式(不安全)双重检查锁&#xff08;Double-Checked Locking&#xff09;&#xff08;…

第三百三十九回

文章目录 1. 概念介绍2. 方法与信息2.1 获取方法2.2 详细信息 3. 示例代码4. 内容总结 我们在上一章回中介绍了"蓝牙综合示例"相关的内容&#xff0c;本章回中将介绍如何获取设备信息.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中获…

十八、任务通知

1、前言 (1)所谓“任务通知”&#xff0c;可以反过来读"通知任务"。我们使用队列、信号量、事件组等等方法时&#xff0c;并不知道对方是谁。使用任务通知时&#xff0c;可以明确指定&#xff1a;通知哪个任务。 (2)使用队列、信号量、事件组时&#xff0c;我们都需…

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项样题卷②

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第2套&#xff09; 目录 2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第2套&#xff09; 模块…

Topics(动态路由)

Topic类型的Exchange与Direct相比&#xff0c;都是可以根据RoutingKey把消息路由到不同的队列中。只不过Topic类型Exchange可以让队列在绑定路由时可以使用通配符。 *&#xff1a;匹配不多不少刚好一个单词。 #&#xff1a;匹配一个或多个词。 举例&#xff1a; audit.#可以匹配…

2023吉利汽车大模型算法工程师面试经验

来源&#xff1a;投稿 作者&#xff1a;LSC 编辑&#xff1a;学姐 问了很多问题&#xff0c;包括实习的项目经验、各种计算机、人工智能的基础&#xff0c;时长1h30min 1.coding 给你一个整数数组 prices 和一个整数 k &#xff0c;其中 prices[i] 是某支给定的股票在第 i 天的…

解密C++中的forward<int>(a)和forward<int >(a):你真的了解它们之间的区别吗?

一文看尽C中的forward完美转发 一、前言二、深入理解forward和完美转发三、对forward<int>(a)的解析四、对forward<int &&>(a)的解析五、forward<int>(a)和forward<int &&>(a)的区别总结 一、前言 完美转发在C中具有重要性&#xff0…

Java开发一个接口提供给第三方调用

1. 环境 基于SpringBoot编写一个接口&#xff0c;提供给第三方调用。类似于我们使用阿里的语音识别功能&#xff0c;我们可以调用阿里封装好的api&#xff0c;也就是通过发送HTTP请求的方式来做语音识别。本篇文章主要记录在SpringBoot中我们是如何开发接口并让别人可以安全调…