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

目录

快速排序:

概念:

动画分析: 

代码实现:

代码分析: 

代码特性:

常见问题:


快速排序:

概念:

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

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

扫描二维码关注公众号,回复: 17214651 查看本文章

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

动画分析: 

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

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

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

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

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

代码实现:

代码分析: 

代码特性:

常见问题:

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

猜你喜欢

转载自blog.csdn.net/2301_76445610/article/details/134863655
今日推荐