快速排序基本思路(通俗易懂+例子)

快速排序

内推日常实习社招也可以简历发送到我邮箱,长期接受简历,部门做搜索产品研发,主要php和go语言!
2022百度提前批招聘】填写内推码可以免专业笔试,部门直接发起面试,有想去的部门可以发送简历到 927①56零36@qq.com 定向内推,本次招聘不影响正常校招流程,相当于多一次机会,赶紧填写内推码【am8eh4】试试吧!
在这里插入图片描述

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
今天看到大神写的一篇快速排序的博客,肃然起敬,觉得原来快速排序这么简单
下面进行简单的试试

快速排序的基本思想是

1、先从数列中取出一个数作为基准数

2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边

3、再对左右区间重复第二步,直到各区间只有一个数

概括来说为 挖坑填数+分治法

下面举例来进行说明,主要有三个参数,i为区间的开始地址,j为区间的结束地址,X为当前的开始的值

第一步,i=0,j=9,X=21

0123456789
2132439854452346686

第二步,从j开始由,后向前找,找到比X小的第一个数a[7]=4,此时i=0,j=6,X=21
进行替换

0123456789
4324398544523216686

第三步,由前往后找,找到比X大的第一个数a[1]=32,此时i=2,j=6,X=21

0123456789
4214398544523326686

第四步,从j=6开始由,由后向前找,找到比X小的第一个数a[0]=4,此时i=2,j=0,X=21,发现j<=i,所以第一回结束

可以发现21前面的数字都比21小,后面的数字都比21大
接下来对两个子区间[0,0]和[2,9]重复上面的操作即可

下面直接给出过程,就步详细解说了

i=2,j=6,X=43

0123456789
4214398544523326686

i=4,j=6,X=43

0123456789
4213298544523436686

i=4,j=5,x=43

0123456789
4213243544523986686

i=5,j=5,x=43

0123456789
4213223434554986686

然后被分为了两个子区间[2,3]和[5,9]

…最后排序下去就是最终的答案

0123456789
4212332434554668698

总结:

1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。

2.j–由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。

3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。

4.再重复执行2,3二步,直到i==j,将基准数填入a[i]中。


代码

class Solution {public void sort(int left,int right,int[] array) {if (left>=right) return ;int start=left;int end=right;int flag=left;while(left<right) {while ((left<right)&&(array[right]>=array[flag])) {right--;}if (array[right]<array[flag]) {int tmp=array[right];array[right]=array[flag];array[flag]=tmp;flag=right;}while ((left<right)&&(array[left]<=array[flag])) {left++;}if (array[left]>array[flag]) {int tmp=array[left];array[left]=array[flag];array[flag]=tmp;flag=left;}}sort(start, left-1, array);sort(left+1, end, array);}
}

分享一个比较牛逼的学习java的网站,基础知识和架构等都有,连接如下:
http://how2j.cn?p=54321
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

java面试八股文

目录 一、java&#xff08;1&#xff09;集合1.list&#xff1a;LinkedList、ArrayList和Vector2.set&#xff1a;HashSet和TreeSet3.map&#xff1a;HashMap、TreeMap和HashTable4.list、set和map的区别5.HashMap扩容机制6.HashMap中的循环链表是如何产生的&#xff08;jdk1.7…

十大排序算法之(二)快速排序--JAVA+C++实现(简单易懂)

文章目录 快速排序&#xff08;Quicksort&#xff09;1、实现原理&#xff1a;1.1、动图展示&#xff1a;1.2、实现步骤&#xff1a; 2、时间复杂度3、代码实现&#xff1a;3.1、JAVA 实现3.2、C实现3.3、C语言实现3.4、C语言递归实现&#xff1a; 快速排序&#xff08;Quickso…

《数据结构与算法》(二十五)- 排序算法:快速排序

目录 前言1. 快速排序1.1 快速排序算法1.2 快速排序算法复杂度分析1.3 快速排序优化 2. 总结 原文地址&#xff1a;https://program-park.github.io/2021/11/24/algorithm_25/ 前言 部分内容摘自程杰的《大话数据结构》 1. 快速排序 快速排序算法最早由图灵奖获得者 Tony Hoar…

c语言的快速排序,C语言实现快速排序法(分治法)

title: 快速排序法(quick sort) tags: 分治法(divide and conquer method) grammar_cjkRuby: true 算法原理 分治法的基本思想:将原问题分解为若干个更小的与原问题相似的问题,然后递归解决各个子问题,最后再将各个子问题的解组合成原问题的解。 利用分治法可以将解决办法分…

面了个蚂蚁金服拿38K出来的,真是砂纸擦屁股,给我露了一手啊

今年的春招结束&#xff0c;很多小伙伴收获不错&#xff0c;拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#xff0c;他山之石&…

10:mysql----存储引擎--进阶篇

目录 1:MySQL体系结构 2:存储引擎简介 3:存储引擎特点 4:存储引擎选择 1:MySQL体系结构 连接层 : 最上层是一些客户端和链接服务&#xff0c;主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 :…

vivo android 6.0 root,vivo X6 A(全网通)如何获取ROOT权限教程

vivo X6 A(全网通)怎么ROOT?vivo X6 A(全网通)ROOT工具选用哪些?如何避免vivo X6 A(全网通)ROOT失败?带着这些疑问来搜索vivo X6 A(全网通)ROOT方法的机友很多。小编推荐这篇vivo X6 A(全网通)一键ROOT教程&#xff0c;具体步骤如下&#xff1a; 1.首先打开奇兔刷机软件&…

Yoyo OS安装过程

Yoyo OS是星火社区开发的一个系统&#xff0c;今天教你如何安装 百度搜索星火应用商店 点击社区 点击Yoyo OS 点击立即下载 点击下载 下载完成后刻录到U盘&#xff08;过程我就不详细介绍了&#xff0c;网上有很多教程&#xff0c;也可以参照我的这篇文章部分来刻录http://t.c…

2022年520最实用的礼物,苹果平板的触控笔

下周就是520了&#xff0c;还没选好礼物的人紧张起来了&#xff01;数码产品可以选择什么作为礼物呢&#xff1f;特别是对于学生党来说&#xff0c;什么是便宜又实用的礼物&#xff1f;我觉得如果对方有苹果平板的电脑的话&#xff0c;选择送一支触控笔是很实用的礼物&#xff…

win10 平板 刷android,Android平板电脑刷Win8 ARM平台将支持Win10

在2015年台北计算机展上&#xff0c;我们首次发现了具有ARM架构的Windows平板电脑. 众所周知&#xff0c;Windows平板电脑只能安装在x86体系结构设备上. 这次曝光是世界上第一个非x86架构Windows平板电脑&#xff0c;因此具有重要意义. 这款非x86架构平板电脑配备了Rockchip的R…

平板电脑硬件如何测试软件,先锋(Pioneer)G71平板电脑软件测试评测-ZOL中关村在线...

谷歌对旗下的智能操作系统Android采取了开源的做法&#xff0c;所以说也就造成了它相较于苹果iOS以及微软Windows系统严重的碎片化现象&#xff0c;当然我们也看到了像三星 TouchWiz UX&#xff0c;HTC Sense UI以及小米 MIUI这些非常成熟且易用的第三方固件&#xff0c;只是它…

苹果xr如何截屏_苹果手机如何单手操作截屏

我们在使用手机过程中&#xff0c;遇到一些优质的文章或者图片时&#xff0c;都会习惯性截屏起来与朋友分享。在截屏过程中&#xff0c;由于手机屏幕太大的原因&#xff0c;一般都要用两个手去操作&#xff0c;一个手按住Home键&#xff0c;另一个手按住电源键&#xff0c;在同…

苹果平板id怎么注册_怎么做成苹果笔记?苹果平板怎么做笔记? - 敬业签便签...

很多朋友&#xff0c;尤其是经常接触电子产品的小伙伴&#xff0c;对于苹果都不陌生。这里说的苹果并不是传统意义上的植物水果&#xff0c;而是科技产品公司。苹果旗下的电子产品有很多&#xff0c;常见的有苹果手机、苹果平板、耳机以及Mac电脑等等。那么怎么做成苹果笔记&am…

苹果xr如何截屏_苹果手机居然自带长截屏功能了?iPhone的多种截屏方式,涨知识了...

苹果手机和安卓手机各有千秋&#xff0c;很多使用苹果手机的小伙伴都说&#xff0c;安卓手机截长图这么简单&#xff0c;为什么苹果手机还需要下载一些软件才行&#xff1f;今天小编就来分享一下苹果手机的截图方式以及升级了iOS13之后如何长截屏。 一、传统的按键截屏 这种截屏…

ipad一直卡在白苹果_近万字多图带你玩转iPad——iPad指南

本文由什么值得买用户原创&#xff1a;麦豆爸爸 从2010年发布至今&#xff0c;iPad已经有9年的历史。时至今日&#xff0c;平板市场只分为iPad和其他&#xff0c;可见iPad在平板的主导地位。有人说iPad就是一大号的iPhone&#xff0c;娱乐设备&#xff0c;刷剧利器&#xff0c;…

苹果6如何截屏_苹果升级iOS14,轻点背面能开启截屏功能,真是太方便了

分享最实在的玩机技巧&#xff0c;洞察最前沿的科技资讯&#xff01;大家好&#xff0c;这里是手机科技园&#xff01; 苹果手机已经进入了全面屏时代&#xff0c;以前我们在手机上截屏&#xff0c;都是借助音量键和主屏幕键&#xff0c;共同完成截图&#xff0c;那么全面屏手机…

android平板的隐藏空间如何开启,平板电脑怎么截图和怎么隐藏游戏?

无论是我们国内还是国外都有大批的苹果爱好者,对比我们国产的平板品牌,苹果在系统上确实有很大的优势。苹果旗下的平板系列众多,一代一代的升级,每一代都有自己的特色。不同于笔记本电脑,平板电脑的便携性更强。下面就为大家介绍一下平板电脑怎么截图和怎么隐藏游戏? 苹果…

建设银行app流水申请

1、打开建设银行APP&#xff0c;点击“账户” 我的账户 2、点击“活期账户交易明细申请“ 活期账户交易明细申请 3、选择“明细申请” 明细申请 4、导出近半年的流水记录 4.jpg 5、在申请记录中查看解压密码 解压密码

数据仓库建设及数据治理总结

在谈数仓之前&#xff0c;先来看下面几个问题&#xff1a; 数仓为什么要分层&#xff1f; 用空间换时间&#xff0c;通过大量的预处理来提升应用系统的用户体验&#xff08;效率&#xff09;&#xff0c;因此数据仓库会存在大量冗余的数据&#xff1b;不分层的话&#xff0c;如…