排序:快速排序(hoare版本)

目录

快速排序:

概念:

动画分析: 

代码实现:

代码分析: 

代码特性:

常见问题:


快速排序:

概念:

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:

任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列。

左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。 

动画分析: 

如上面动画所展示,选择数组最左端的元素作为基准值key ,又在数组的两端设置两个遍历变量进行数组的遍历。

左边的遍历负责查找比key大的数值,右边的遍历负责查找比key小的数值。

当左边遇到了比key大的值停下,等待右边遇到比key小的值,随后二者所指向的元素进行交换,进行多次操作,等到二者相遇后再将处在最左端的key值和相遇位置的元素进行交换。

这样做的目的是使用key值把整个数组进行了分隔,左端的元素都比key小,右端的元素都比key大。

随后便是将分隔的两部分 分别 进行刚才的操作,继续分隔成两部分直到不能再分隔位置。  

代码实现:

代码分析: 

代码特性:

常见问题:

  1. 遇到等于选项时该怎么办?
  2. key值是否会产生变动?
  3. 相遇时,如果条件没有达成可能不会停下。
  4. key易写成局部变量
  5. 第一趟的左端遍历变量的初始下标位置是0还是1?
  6. 遇到相等的元素是否需要停下遍历变量的前进循环?

相关推荐

  1. 排序算法——快速排序

    2023-12-08 02:06:03       58 阅读
  2. 排序算法——快速排序

    2023-12-08 02:06:03       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 02:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 02:06:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 02:06:03       82 阅读
  4. Python语言-面向对象

    2023-12-08 02:06:03       91 阅读

热门阅读

  1. golang 解决ZWNBSP 空字符问题

    2023-12-08 02:06:03       54 阅读
  2. 【安全】【Linux】通过/proc/pid/获取进程信息

    2023-12-08 02:06:03       61 阅读
  3. 常用到的设计模式(1)

    2023-12-08 02:06:03       61 阅读
  4. scala可变参数列表使用

    2023-12-08 02:06:03       64 阅读
  5. AI聊天 AI绘画 AI视频 AI制作PPT

    2023-12-08 02:06:03       63 阅读
  6. vue watch

    2023-12-08 02:06:03       66 阅读
  7. Docker安装Elasticsearch和控制台

    2023-12-08 02:06:03       70 阅读
  8. Git篇常用命令

    2023-12-08 02:06:03       63 阅读
  9. 26.Python 网络爬虫

    2023-12-08 02:06:03       59 阅读