【八大排序(四)】快排-到底多快才能追上奔驰车里的夏树?(上)

简介: 【八大排序(四)】快排-到底多快才能追上奔驰车里的夏树?

💓博主CSDN主页:杭电码农-NEO💓


⏩专栏分类:八大排序专栏


🚚代码仓库:NEO的学习日记🚚


🌹关注我🫵带你学习排序知识

  🔝🔝


1. 前言🏁

博主第一次听见这个排序的时候
只觉得它很嚣张.别人都叫:
插入,希尔,归并排序,凭什么你叫快排
你到底有多快?心里是这个表情

但是当我学习完快排的思想
并且用三种方法写出代码后
博主只想说这是什么神仙思想
想出此方法的人定非 常人也!

废话不多说,上硬菜!


2. 快速排序基本思想🏁

基本思想:

  • 从待排序的数组中选取一个基准值.
    (我们把基准值记为key)
  • 再将数组分为两部分:
    1. 左子数组所有元素小于基准值
    2. 右子数组所有元素大于基准值
  • 左右子数组再选基准值重复这个过程

对基准值选取的思考:

一般把数组第一个或
最后一个元素作为基准值
但是这样做有一定的缺陷
后面遇见问题了再修正


3. 快排思想实现(hoare版本)🏁

hoare版本:(发明者叫:C. A. R. Hoare )
也就是发明快排的人想出的方法

我们先定义一个无序数组:

int a[10]={6,1,2,7,9,3,4,5,10,8};
• 1

思路详解:

  1. 将第一个元素6作为基准值
  2. 定义两个指针指向:第一和最后的位置
  3. 左边的指针(L)找比基准值大的值
  4. 右边的指针( R)找比基准值小的值
  5. R先走.R找到满足要求的值后停下
  6. L再走,找到满足要求的值后停下
  7. 当L和R都停下,交换两个位置数据
  8. 当L和R相等时:
    交换当前位置与基准值的值.

听起来比较抽象,我们画图理解一下:

走完一次循环后,数组变成了这样:

基准值的左边全部小于它

基准值的右边全部大于它

这说明这个基准值6

已经放在了数组中的正确位置!

也就是最终排好序的位置

我们只要不断递归左右子数组

最终这个数组就会变成有序!

相关文章
|
3月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
25 0
|
8月前
|
算法 搜索推荐
【六大排序详解】中篇 :选择排序 与 堆排序
选择排序可以用扑克牌理解,眼睛看一遍所有牌,选择最小的放在最左边。然后略过刚才排完的那张,继续进行至扑克牌有序。这样一次一次的挑选,思路很顺畅。总结为: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。
62 6
|
8月前
|
算法
【六大排序详解】终篇 :冒泡排序 与 快速排序
冒泡排序如同泡泡上升一样,逐个逐个向上冒,一个接一个的冒上去。两两比较,较大者(较小者)向后挪动。全部遍历一遍即可完成排序
49 2
|
8月前
|
存储 搜索推荐 算法
拒绝水文!八大排序(四)【适合初学者】归并排序和计数排序
拒绝水文!八大排序(四)【适合初学者】归并排序和计数排序
|
8月前
|
算法 搜索推荐 Java
算法编程(四):合并两个有序数组
算法编程(四):合并两个有序数组
78 0
|
机器学习/深度学习 搜索推荐
八大排序(三)--------简单选择排序
八大排序(三)--------简单选择排序
51 0
【八大排序(四)】快排-到底多快才能追上奔驰车里的夏树?(下)
【八大排序(四)】快排-到底多快才能追上奔驰车里的夏树?(下)
【八大排序(四)】快排-到底多快才能追上奔驰车里的夏树?(下)
|
搜索推荐 Shell C++
【八大排序(二)】希尔排序(谁说天才都短命?)
插入排序一般来说是低效的 因为它一次只能挪动一个数据 如果你不知道插入排序可跳转插入排序 所以Donald Shell(希尔)这个人 对插入排序进行了优化 将插入排序提升了不止一个档次 甚至可以和快速排序平起平坐!
|
算法
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
88 0
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
|
存储
七大排序之直接插入排序
七大排序之直接插入排序

热门文章

最新文章