首页 > 其他分享 >快速排序

快速排序

时间:2022-10-28 18:22:25浏览次数:75  
标签:元素 数据 位置 pivot 排序 快速

快速排序的思想是这样的,如果要对数组区间 [p, r] 的数据进行排序,我们先选择其中任意一个数据作为 pivot(分支点),一般为区间最后一个元素。

然后遍历数组,将小于 pivot 的数据放到左边,将大于 pivot 的数据放到右边。接着,我们再递归对左右两边的数据进行排序,直到区间缩小为 1 ,说明所有的数据都排好了序。

填坑法:快速排序的另一种实现方式如下所示,先取出一个元素作为 pivot(假设是最后一个),这时 pivot 位置可以看作为空,然后从左到右查找第一个比 pivot 大的元素放在 pivot 的位置,此时空的地方变成了这第一个比 pivot 大的元素位置。

然后从右到左查找第一个比 pivot 小的元素放在刚才空的位置,依次循环直到从左到右和从右到左都查找到了同一位置,这时候再把 pivot 放置在最后一个空位。这个过程可以形象的被称为“挖坑填坑”。

  

 

 

参考:排序算法之——归并排序和快速排序

标签:元素,数据,位置,pivot,排序,快速
From: https://www.cnblogs.com/-courage/p/16837017.html

相关文章

  • C# OrderBy多个字段排序
    C#OrderBy多个字段排序先按Sort字段正序排序,再按CreateDate降序排序,如果三个字段进行排序,我才是再后面再加ThenByDescendingvarresult=_IDbConnection.Query<Query......
  • JS数组对象排序
    原文地址:https://blog.csdn.net/qq_37899792/article/details/88655920利用数组api——>sort来进行排序varperson=[{name:"Rom",age:12},{name:"Bob",age:22},{name:......
  • Flutter开发之Scaffold组件快速开发APP
    Scaffold包括的属性constScaffold({Key?key,PreferredSizeWidget?appBar,Widget?body,Widget?floatingActionButton,FloatingActionButtonLocation?floatingAct......
  • 使用 Excel 快速拼接 sql 语句
    1.在数据库中查询出要删除的记录的关键字段  selectcol1,col2,col3,col4fromtabName; 2.将结果copy到excel中   3.在excel的E1单元格写如下内容="delet......
  • SpringCloud微服务实战——搭建企业级开发框架(四十八):【移动开发】整合uni-app搭建移动
      uni-app默认使用uni-ui全端兼容的、高性能UI框架,在我们开发过程中可以满足大部分的需求了,并且如果是为了兼容性,还是强烈建议使用uni-ui作为UI框架使用。  如果作为......
  • 快速排序-归并排序-堆排序
    十大排序动图快速排序优化数组取标pivot,将小的元素放在pivot左边,大元素在右侧,然后依次对右边的子数组继续快排,以达到整个序列有序publicclassQuickSort{public......
  • 排序算法 Sort
    Sort评价排序算法的标准时间复杂度空间复杂度稳定性:如果一个排序算法能够保留数组中的重复元素的相对位置,则可以被称为是稳定的冒泡排序通过两两交换,每次循环都使......
  • 快速排序
    思想:在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素;将待排序的元素进行分区,比基准元素大的......
  • 12.CF558E A Simple Task 线段树维护字符串区间排序
    12.CF558EASimpleTask线段树维护字符串区间排序要求对于给定的字符串,对给定的区间进行排序线段树经典应用,维护26棵线段树,实现区间覆盖和查询即可。洛谷传送门:​​CF558E......
  • 【Serverless】快速集成云函数HarmonyOS
    ​1、学习目标什么是AppGalleryConnect云函数云函数是一项Serverless计算服务,提供FaaS(FunctionasaService)能力,可以帮助开发者大幅简化应用开发与运维相关事务,降低应......