首页 > 图灵资讯 > 技术篇>正文

尝试这个快速排序

2024-09-04 20:15:59

尝试这个快速排序

在第 5 在章中,你看到了一个简单的分类方法,叫做 冒泡排序。当时提到有 收视率显著提高。在这里,您将开发最好的版本之一:快速排序(快速排序)。 由C快速分类.A.R.Hoare的发明和命名是目前最好的通用分类算法。我不能在第五章中展示它,因为快速排序的最佳实现是基于递归。本公司将开发的版本对字符数组进行分类,但逻辑适用于对任何类型的对象进行分类。 快速排序是基于分区的思想。一般情况下,选择一个值(称为比较),然后将数组分成两部分。一侧插入所有大于或等于分区值的元素,另一侧插入较小的元素。重复每个剩余部分的过程,直到数组排序完成。例如,给定 fedacb 数组并使用 d 作为比较,数组将在快速排序的第一次重新排列,如下所示:

初始 f e d a c b 第 1 段 b c a d e f

然后对每个部分(即 bca 和 def)重复这个过程。正如你所看到的,这个过程本质上是递归的,实际上,快速排序最简单的实现就是递归。 您可以通过两种方式选择比较值。您可以随机选择它,也可以通过搜索从数组中获得的一小组值的平均值来选择它。为了获得最佳分类,您必须选择位于值范围中间的值。然而,对于大多数数据集来说,这并不容易。最坏的情况是所选值位于一端。即便如此,快速排序仍然可以正确运行。 我们将开发的快速排序版本选择数组的中间元素作为比较。

见QSDemo.java。

快速排序:

  • 最高效、最广泛使用的分类算法之一。
  • 由 C.A.R. 发明。霍尔。
  • 根据分区的概念,将数组分为递归排序的部分。
  • 比简单的方法如冒泡排序更有效率。

操作:

  • 比较值(枢轴):
  • 选择一个值作为参考(枢轴),并围绕该值组织数组。
  • 小于主元的元素位于一侧,大元素位于另一侧。
  • 将过程重复到每个部分的递归地,直到数组完全排序。
快速排序

QS演示

以上是尝试这个快速排序的详细内容。请关注图灵教育的其他相关文章!

上一篇 了解静态成员
下一篇 返回列表

文章素材均来源于网络,如有侵权,请联系管理员删除。