快速排序法(详解)-程序员宅基地

技术标签: 基础算法  

假设对以下10个数进行快速排序:

6 1 2 7 9 3 4 5 10 8

我们先模拟快速排序的过程:首先,在这个序列中随便找一个数作为基准数,通常为了方便,以第一个数作为基准数。

6 1 2 7 9 3 4 5 10 8

在初始状态下,数字6在序列的第1位。我们的目标是将6挪到序列中间的某个位置,假设这个位置是 k k k。现在就需要寻找这个 k k k,并且以第k位为分界点,左边的数都 ≤ 6 \le6 6,右边的数都 ≥ 6 \ge6 6。那么如何找到这个位置 k k k呢?

我们要知道,快速排序其实是冒泡排序的一种改进,冒泡排序每次对相邻的两个数进行比较,这显然是一种比较浪费时间的。

而快速排序是分别从两端开始”探测”的,先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换他们。这里可以用两个变量 i i i j j j,分别指向序列最左边和最右边。我们为这两个变量起个好听的名字“哨兵 i i i”和“哨兵 j j j”。刚开始的时候让哨兵 i i i指向序列的最左边,指向数字6。让哨兵 j j j指向序列的最右边,指向数字8。

6 1 2 7 9 3 4 5 10 8
i
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40941722/article/details/94396010

智能推荐

echarts自适应问题,echarts中怎么改变字体单位实现自适应_echarts字体适应-程序员宅基地

文章浏览阅读1w次,点赞24次,收藏49次。最初想着怎么给echarts设置vw单位或者rem,echart中怎么把legend的单位设置为vw或者rem来使表格自适应,后面发现行不通。项目中使用px-to-vw包,将所有px转为对应的vw,所有可以根据相同比例进行缩放,做到自适应效果。但是使用了echarts图表,图表中的fontSize和legend的大小等默认都是px单位。当屏宽为4K屏时,其他地方元素字体等都能适应,但是echa..._echarts字体适应

Python Web 之 Flask-SQLAlchemy 框架_flask-sqlalchemy 类似于mybatisplus的封装-程序员宅基地

文章浏览阅读689次,点赞2次,收藏3次。文章目录数据库 ORM 框架MySql-8安装Windows 免安装版图形化客户端关于破解Flask-SQLAlchemyCRUD操作`Create` 插入数据`Read` 查询数据`Update` 修改数据`Delete` 删除数据定义实体关系欢迎关注我的公众号:编程之路从0到1数据库 ORM 框架什么是ORM?即Object-Relationl Mapping,它的作用是在关系型数据库和..._flask-sqlalchemy 类似于mybatisplus的封装

【干货】Spring系列全家桶最强合集_spring全家桶-程序员宅基地

文章浏览阅读1.6k次,点赞3次,收藏12次。Spring是一个轻量级的Java开发框架。Spring的核心是控制反转(IOC)和面向切面编程(AOP)。Spring主要有如下优点1.解耦2.支持面向切面编程3.便于集成其他框架很多朋友想学习spring,但不知道要从哪里学起,小编今天就分享一份spring全家桶学习资料。毫不夸张的说这是迄今最全的Spring相关全家桶,脑图+面试+进阶学习,全文篇幅有点长,但干货满满,请仔细阅读!且全文提及的全部手绘脑图的原件、面试解析的原件、进阶学习的笔记PDF原件脑图篇面试篇。..._spring全家桶

SpringSecurity学习总结-1 第二章 项目基础模块搭建_org.springframework.security pom.xml-程序员宅基地

文章浏览阅读366次。SpringSecurity学习总结-1 第二章 项目基础模块搭建_org.springframework.security pom.xml

Android LLVM-Obfuscator C/C++ 混淆编译的深入研究_obfuscator++-程序员宅基地

文章浏览阅读2.5k次。一、 LLVM是什么?(1)LLVM是lowlevel virtual machine的简称,是一个编译器框架。苹果公司的Xcode 4.0之后用的都是LLVM编译器。(2)LLVM 诞生于2003.10伊利诺伊大学香槟分校,创始人ChrisLattner,现任苹果公司『开发者工具』部门的主管。 二、 LLVM-Obfuscator 是什么?(1)LLV_obfuscator++

解决ModuleNotFoundError: No module named ‘tensorflow.contrib‘_modulenotfounderror: no module named 'tensorflow.c-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏3次。d解决另外附带一个常见的版本兼容性问题就是tf.app不能使用的,TensorFlow遇到的bug:ModuleNotFoundError: No module named 'tensorflow.contrib'import tensorflow.contrib.slim as slim不降级解决:下载镜像包pip install --upgrade tf_slim将import tensorflow.contrib.slim as slim改为import _modulenotfounderror: no module named 'tensorflow.contrib' crf

随便推点

ORBSLAM3 的改进_orb改进-程序员宅基地

文章浏览阅读9.6k次,点赞17次,收藏114次。周六看到了ORBSLAM3的源码,安装运行后看了一下其代码结构,因为加IMU的部分是针对之前的ORB-VI, 因此大家可以参考jinpang的LearnORBVI可以更纯粹地学习视觉+IMU的组合;这篇文章主要是针对其在Tracking线程做出的改动,尤其是添加Atlas后对Tracking部分的影响,LoopClosing和MapMerging的部分会在后面的分析中讲到,有错误也欢迎各位指正。ORBSLAM3相对于ORBSLAM2做出的主要改动:1. Atlas: 用于保存很多琐碎的地图;主要_orb改进

livechart 只显示 y 值_图片显示特斯拉上海超级工厂 Model Y 生产线已基本准备就绪 - 特斯拉...-程序员宅基地

文章浏览阅读49次。10 月 23 日消息,据国外媒体报道,在一期的 Model 3 生产线建成投产之后,特斯拉上海超级工厂今年开始了二期的大规模建设,主要是建设 Model Y 的生产厂房,所生产的 Model Y 计划在明年开始交付。从特斯拉最新公布的图片来看,在经过大半年的建设之后,上海超级工厂 Model Y 生产厂房的外部施工已基本结束,内部的生产线也已基本准备就绪。特斯拉是在新近发布的三季度财报中,公布上..._特斯拉工厂python

Kettle 参数、变量和全局变量(kettle.properties)使用-程序员宅基地

文章浏览阅读3.2k次。有没有能统一管理一个参数,然后让所有的transformation和job都可以读到呢? 答案是有 1.首先,打开.kettle\kettle.properties,直接在里面定义,(注意这个文件需要与spoon.bat放在同一个目录下面)比如: paramName=to_char(sysdate,'yyyymmdd') 这里支持数据库函数,说的更直白点,就..._kettle.properties

NewPhy.-揭秘优势种dominant species-程序员宅基地

文章浏览阅读2.4k次。Title:Demystifying dominant speciesJournal:New PhytologistReceived: 4 May 2018Accepted: 17 Fe..._优势种功能性状的变化,对生态系统功能

基于 Spring Boot + Vue 实现的可视化拖拽编辑的大屏项目-程序员宅基地

文章浏览阅读1k次。大家好,今天给小伙伴们分享一个基于 SpringBoot + Vue 实现的可视化拖拽编辑的大屏项目;# 简介这个是一个开源的一个BI平台,酷炫大屏展示,能随时随地掌控业务动态,让每个决策都有数据支撑。多数据源支持,内置mysql、elasticsearch、kudu驱动,支持自定义数据集省去数据接口开发,支持17种大屏组件,不会开发,照着设计稿也可以制作大屏。三步轻松完成大屏设计:配置数据源--..._vue实现拖拽可视化

使用百度sdk定位相关参数设定_百度android sdk设置精度优先-程序员宅基地

文章浏览阅读3.3k次。使用百度sdk定位相关参数设定_百度android sdk设置精度优先

推荐文章

热门文章

相关标签