#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
void quickSort(vector<int> &array, int left, int right)
{
// 以最左边的数(left)为基准
if (left < right)
{
int base = partion(array, left, right); // 对数组进行分割,取出下次分割的基准标号
quickSort(array, left, base - 1);
quickSort(array, base + 1, right);
}
}
private:
int partion(vector<int> &array, int left, int right)
{
// 以最左边的数(left)为基准
int baseNum = array[left];
while (left < right)
{
while (left < right && array[right] >= baseNum)
right--; //right--直到 array[right] < baseNum
array[left] = array[right]; //找到了比baseNum小的元素,将这个元素放到最左边left的位置
while (left < right && array[left] <= baseNum)
left++; //left++直到array[left] > baseNum
array[right] = array[left];
}
array[left] = baseNum; // 最后将baseNum放到left位置。此时,left位置的左侧数值应该都比left小;
return left;
}
};
int main()
{
vector<int> array{2, 4, 5, 7, 6, 9, 8, 1, 8};
Solution s;
s.quickSort(array, 0, array.size() - 1);
for (auto i : array)
cout << i;
cout << endl;
system("pause");
return 0;
}相关推荐
Zemax物理光学实战:3分钟搞定高斯光束传播模拟(附菲涅尔局部分析技巧)
本文详细介绍了在Zemax中进行高斯光束传播模拟与菲涅尔局部分析的实战技巧。通过3分钟快速设置指南和参数解析,帮助光学工程师准确模拟激光光束特性,避免常见误区。特别分享了菲涅尔局部分析的关键技巧和传播参数优化策略,提升光学系统设计的精度与效率。
python 可视化:fig, ax = plt.subplots()画多表图的3中常见样例 & 自定义图表格式
python 可视化:fig, ax = plt.subplots()画多表图的3中常见样例 & 自定义图表格式 一、fig, ax = plt.subplots()的作用? 它是用来创建 总画布/figure“窗口”的,有figure就可以在上边(或其中一个子网格/subplot上)作图了,(fig:是figure的缩写)。 plt.subplot(111)是plt.subplot(1,...
手把手教你用Gazebo插件实现阿克曼底盘仿真(附Navigation2适配指南)
本文提供了一份完整的ROS2 Navigation2与Gazebo阿克曼底盘仿真全栈指南。从阿克曼运动学原理出发,详细讲解了如何构建URDF/SDF模型、集成gazebo_ros_ackermann_drive插件并进行PID调优,并重点阐述了如何深度适配Navigation2,包括配置Ackermann运动模型、调整规划器与恢复行为,最终实现从建图到自主导航的全流程仿真。
EAX、ECX、EDX、EBX、ESI、EDI、ESP、EBP寄存器
一般寄存器:AX、BX、CX、DX AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI、DI SI:来源索引暂存器,DI:目的索引暂存器 堆叠、基底暂存器:SP、BP SP:堆叠指标暂存器,BP:基底指标暂存器 EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元 ESI、EDI、ESP、EBP:為si,di,
Fiddler everywhere的一些基础操作
网上能搜到的Fiddler everywhere使用教程太少,于是我整理了一些自己实操成功的内容,包括Fiddler everywhere的Mock测试、弱网测试等基础操作,后续还会持续更新。操作系统:macOS使用工具:Fiddler everywhere 5.10.0本文简单介绍了使用Fiddler everywhere进行的Mock测试和弱网测试,而Fiddler everywhere提供了更多的其他实用的功能,我会在后期进行一个持续的学习和更新。
别再只会画方块了!Cesium 1.62 实战:用 Polygon、Ellipse 和 PolylineVolume 玩转复杂地理围栏与3D管道
本文深入探讨了Cesium 1.62在复杂地理围栏与3D管道开发中的高级应用,通过Polygon、Ellipse和PolylineVolume等API实现不规则禁飞区建模、椭圆围栏设计及地下管线可视化。文章结合实战代码,详细解析了性能优化技巧和工程实践,帮助开发者突破基础图形绘制局限,构建真实业务场景中的三维空间系统。
汇编语言-------从键盘输入 N 个数,排序后输出(用循环写)
微机原理课程上机实验之一 题目: 从键盘输入 N 个无符号数(整数,小于256),将其转换为二进制数后存放在字节型缓冲区 BUF 中。对这 N 个数进行由大到小排序,排序后仍将其存储在 BUF 中,并将排序后的结果在屏幕上显示出来(请用循环程序设计方法编写汇编程序实现上述功能)。 已经在DOSBOX/Emu8086 下正确运行过了 详见注释 D...
配置xen上VM混杂模式,使其能捕获物理网络流量
本文目的:配置VM和xen相应的物理网卡(pif)和虚拟网卡(vi
快速排序-1
快速排序-1 前言: 相信大家对基础的冒泡选择插入都有了解,我就先不说这三种。我今天要说的是有点陌生的快速排序,希望大家能有所收获。 正文: 基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 简单来说就是找一个数(一般是开头那个)做基准值,一轮操作后,比基准值大的在它右边,比它小的在左边,然后再对剩余部分再进行同样算法。 如何操作: 先进行一轮操
基于 YOLOv8 的自动驾驶车辆障碍物检测与避障路径规划
本文探讨基于YOLOv8的自动驾驶车辆障碍物检测与避障路径规划系统。在感知层面,采用YOLOv8模型实现多类别障碍物识别,结合单目视觉距离估计和ByteTrack多目标跟踪算法,完成障碍物的稳定检测与运动状态估计。在路径规划层面,设计分层规划架构,融合全局路径规划与局部避障算法,重点实现Frenet坐标系下的采样优化算法和基于模型预测控制的实时避障轨迹生成。通过完整的代码实现与仿真实验,验证系统在复杂交通场景下的有效性与实时性,为自动驾驶开发者提供从理论到实践的完整技术参考。 关键词:YOLOv8;自动驾驶
英飞凌 AURIX TC3XX 系列单片机的 NVM-Flash 介绍
简单介绍英飞凌 AURIX TC3XX 系列多核单片机的 Flash,便于快速上手使用
常用排序1:快速排序理解
快速排序理解: 将序列中一个值作为基准值, 从最后一位开始向前和基准值比较出现小于的值与基准值交换位置,之后从前开始往后找大于基准值的数,找到停止并与基准值交换,重复流程直到左右比较的值“遇到”。遇到后出现基准值左边的数都小于基准值,右边的都大于基准值。通过基准值将其分割两个部分继续重复递归比较以上步骤。 通过两个不相邻元素交换,可以一次交换消除多个逆序,加快排序速度。快速排序方法在要排序的数据已...
保研考研机试攻略(满分篇):第二章——满分之路上(1)
保研考研机试攻略(满分篇):第二章——满分之路上(1)2.1计算机和基础+2.2进阶背包问题+2.3毛毛虫算法
pta6-1 快速排序
6-1 快速排序 (15分) 给一个无序表,使用快速排序算法对它进行排序。 函数接口定义: int Partition(SqList &L,int low,int high); void QuickSort(SqList &L, int low, int high); 其中L是待排序表,low和high是排序的区间。 裁判测试程序样例: #include <iostre...
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
1.快速排序
快速排序,简称快排。 如大家所见,当我们要用C语言或者c++等编译语言将一堆数字进行排序的时候,其实并不复 杂,我们只需要用两次for就可以将数字排好顺序,但这样排序的时间复杂度,大家应该都知道是 n(n^2)的,在一些ac题目中,其实是可能会超时的,比如一道题的范围是0<N<10^9,那么这样排序 我们最多要进行10^18次,显然这时肯定会超时的,所以这时候就要用到快排的思想。 首先,快排的时间复杂度是o(n)的,比起我们的常规方法,时...
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
排序:1.3、快速排序
文章目录前言一、快速排序二、快速排序源码三、结果 前言 我们之前介绍的桶排序利用数组排序,虽然操作简便,时间性能上也很是友好,O(M+N),然而却有不少致命的缺陷,比如浪费空间。而冒泡排序虽然解决了空间上的浪费,但是双重循环下的两两互换,在时间性能上却是得不偿失,O(N^2),空有名字的浪漫,却是一无是处。 那么是否有一种时间和空间上的双重友好呢?显然是有的,这么我们简单的介绍一下,Charles Antony Richard Hoare先生在1960年提出的快速排序。 一、快速排序 首先随便给出我们要
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
快速排序 算法(形式1)(C语言实现)
快速排序 算法(形式1)(C语言实现)
PHP实现常用的排序1 快速排序算法
实现思路:把第一个元素作为标记,依次判断后续的值,如果小于它则放在左边,如果大于它则放右边,同理把左右两部分看成一个整体一直递归,最后再数组拼接起来. 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 它的最优时间复杂度为O(nlogn)【以标记元...
快速排序 python菜鸟教程-1.6 快速排序
上方没有C#实现,我补充一下,如下所示://快速排序(目标数组,数组的起始位置,数组的终止位置)static void QuickSort(int[] array, int left = 0, int right = -1){if (right.Equals(-1)) right = array.Length - 1;try{int keyValuePosition; //记录关键值的下标//...
DS排序—快速排序1
2、循环结束的条件是low==high,这意味着每次改动low或者high的值,我们都要检查一下此时low是否等于high,是的话要跳出最外层循环,注意是最外层循环,不要再做任何操作;快排的算法描述不难:取一个序列的第一个元素,以它为基准,将剩余的元素排在基准元素的两边,左边子序列元素均小于基准元素,右边子序列元素均大于基准元素;5、根据题目输出,子序列为1时也要有输出,因此我们最后要递归进入长度为1的子序列,因此第4点中带等号;对每组测试数据,输出快速排序每趟排好的数字及位置(位置从1开始)。
快速排序1
package Sort; import java.util.Arrays; //快速排序 public class QuickSort { public static void main(String[] args) { int[] arr={4,3,2,1,5,9,8,7,6}; quickSort(arr,0,arr.length-1); ...
1、快速排序
首先选一个轴值(pivot,也有叫基准的),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。递归到最底部时,数列的大小是零或一,也就是已经排序好了。注意:同选择排序相似, 快速排序每次交换的元素都有可能不是相邻的, 因此它有可能打破原来值为相同的元素之间的顺序. 因此, 快速排序并不稳定.快速排序(Quicksort)是对冒泡排序的一种改进,借用了分治的思想,由C. A. R. Hoare在1962年提出。
1.3 快速排序
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个串行(list...
1.单路快速排序、2.双路快速排序、3.三路快速排序
1.单路快速排序 要点 将数字小于某个标定值得归入左边 递归 每次确定标点值的位置,然后递归的确定左右数组的标定值的位置。 代码片段 package algorithms func QuickSortOneWay(arr []int) { n := len(arr) quickSortOneWay(arr, 0, n-1) } func quickSortOneWay(arr []int,...
804



被折叠的 条评论
为什么被折叠?



