超小白教程之快速排序
快速排序的思想是"分而治之",你可以把它想象成打完一边的怪,打另一边的怪。
核心思路就是1.找到"一个人的身高",比他高的站后面,比他矮的站前面。
2.在矮的那堆人中再找出一个人的身高,比他高的站后面,矮的站前面,以此类推。
3.高个子那边也是如此。
接下来看保姆代码:
public class Parti {public void quick(int[] arr, int first, int end) {int x = first;//first和end都是数组下标,end不要弄成数组长度哟int y = end;int k = arr[first];//这就是那个"一个人的身高",相当于参照物.while (x < y) {while (x < y && arr[y] >= k) {//有人问,上面判断x<y了,为啥这里还要判断,因为y--啊....y--;//不满足arr[y]>=k就退出,意思就是y递减,直到找到第一个比K小的数退出.}if (x < y) {int temp = arr[x];arr[x] = arr[y];arr[y] = temp;x++;//其实这个x++,不要也可以,但为了体恤虚拟机,让他少走几步路吧.}while (x < y && arr[x] <= k) {x++;}if (x < y) {int temp = arr[x];arr[x] = arr[y];arr[y] = temp;y--;}}System.out.println("k="+k+" "+"x="+x+" "+"y="+y);//这个你可以用来看"一个人的身高",和x,y大小,可以判断接下来是运行哪步.if (x > first) {//这2个递归调用,就是在高个子和矮个子中再排序.quick(arr, first, x - 1);}if (y < end) {quick(arr, x + 1, end);}}public static void main(String[] args) {Parti p = new Parti();int[] list = { 50, 20, 10, 88, 70, 57, 9, 58 };p.quick(list, 0, 7);for (int i : list) {System.out.print(i + " ");}}
}
到这里了,你要是还看不懂!没关系,还有图。
我们看看上面代码的运行结果
接着看第一次排序的过程图
第二次,第三次,第N次。。。我不想弄了,晕了~~~~~~~~
超小白教程之快速排序相关推荐
- geoserver 发布 矢量切片(pbf)并用openlayers 6.14 /leaflet 1.8 加载展示 (二)(小白必备:超详细教程)
上一篇讲了 如何利用geoserver 发布矢量切片,接下来我们说 如何去展示,既然做我们就作全面吧,谁让我们gis 就是这么苦逼呢,哈哈. 环境: geoserver 2.21 vue 2.0 op ...
- geoserver 发布 矢量切片(pbf)并用openlayers 6.14 /leaflet 1.8 加载展示 (三)(小白必备:超详细教程)
前两篇分别讲了 如何利用geoserver 发布矢量切片和openlayers 加载.接下来我们说 如何用leaflet 展示,既然做我们就作全面吧,谁让我们gis 就是这么苦逼呢,哈哈. 环境: g ...
- geoserver 发布 矢量切片(pbf)并用openlayers 6.14 /leaflet 1.8 加载展示 (一)(小白必备:超详细教程)
环境: geoserver 2.21 vue 2.0 openlayers 6.14 leaflet 1.8 第二篇地址:openlayers 加载矢量切片 geoserver 发布 矢量切片(pbf ...
- Centos7 搭建Nginx图片服务超详细新手小白教程
简介:以上文章讲述的是[Centos7超详细的安装与部署应用MySQL,Redis]接下来我总结一下[Centos7 搭建Nginx图片服务超详细教程].觉得我还可以的可以加群一起督促学习探讨技术.Q ...
- 计算机网络教程网线制作,图吧小白教程 篇二十六:手把手教你自制网线(夹网线水晶头)...
图吧小白教程 篇二十六:手把手教你自制网线(夹网线水晶头) 2019-11-19 23:07:38 31点赞 309收藏 27评论 创作立场声明:咕咕咕 教程最后还是出了,不过咱现在用啥还是直接网购号 ...
- HbuilderX微信小程序uniapp分包小白教程趟坑【伸手党福利】【干货】
本教程为小白教程,主管操作,具体原理讲解欢迎评论区补充. 微信小程序分包原因: 1.多人开发 2.引入了大型js 3.单项目多模块需要分包 官方资料: https://developers.weixi ...
- 小白教程:Ubuntu下使用Darknet/YOLOV3训练自己的数据集
小白教程:Ubuntu下使用Darknet/YOLOV3训练自己的数据集 YOLOV3官网教程:https://pjreddie.com/darknet/yolo/ 使用预训练模型进行检测 git c ...
- 手把手从零开始搭建k8s集群超详细教程
本教程根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps同步所做笔记教程 k8s集群搭建超详细教程 1. 基本环境搭建 1. 创建私有网络 2. 创建服务 ...
- 安装64位Oracle 10g超详细教程
安装64位Oracle 10g超详细教程 1. 安装准备阶段 1.1 安装Oracle环境 经过上一篇博文的过程,已经完成了对Linux系统的安装,本例使用X-Manager来实现与Linux系统的连 ...
- mysql超详细教程_MySQL8.0.23安装超详细教程
前言 最近在做一个人脸识别的项目,需要用数据库保存学生信息与前段交互. MySQL的优点 1.mysql性能卓越,服务稳定,很少出现异常宕机. 2.mysql开放源代码且无版权制约,自主性及使用成本低 ...
最新文章
- 关于MAC升级后,vim更新插件报错
- matlab-xlsread无法打开文件找不到文件
- UIView的生命周期
- RuntimeError: readexactly() called while another coroutine is already waiting for incoming data
- 学生成绩查询java版_学生成绩查询系统,基于ssm的JAVA系统
- CSDN在2017年度的若干“升级”
- curl 安装_实用干货——如何使用curl命令下载文件
- VTD信号灯TrafficLight数据解析提取
- 如何位图转换矢量图或者数字油画底稿
- 已解决IndentationError: unindent does not match any outer indentation level
- 详解百度大脑EdgeBoard出色的视频处理技术
- iOS SafeArea安全区域
- npm ERR! could not determine executable to run
- 315线上知识竞赛答题活动方案及模板分享
- Java到底能干什么?
- c语言处理rna序列,RNAseq 完整操作流程以及后续例子操作
- python实现水仙花数判断
- 库卡工业机器人负载曲线图_KUKA/库卡机械臂 KR500 R2830工业机器人负载500KG
- Ettercap	进行arp嗅探密码
- FastAdmin点击输入框, 弹出选择页面, 并把所选的值返回给父窗口