当前位置: 首页 > 网络应用技术

快速排序排序算法

时间:2023-03-07 15:03:19 网络应用技术

  快速分类是我们一直在谈论的话题。如果每个人都想说他的原则可能会被描述,并且可能需要一些时间来写它。

  今天,让我谈谈我对快速分类和快速分类模板的理解。

  不知道,但不知道为什么。

  快速分类基于多个比较和交流

  第一个元素在此处指定为前哨(基准元素),然后定义了两个指针,指向数组头和数组结束

  首先找到它,找到第一个小于前哨(基准元素)的第一个

  从后面回头,找到第一个比前哨(基准元素)大的

  因为我们要从小到大,如果我们想从大到小

  发现后交换它们

  因为此时,左指针和右指针尚未关闭,并且循环必须继续。我们继续根据上述步骤寻找元素

  首先找到它,找到小于哨兵(基准元素)的第一个元素

  从后面回头,此时,我们发现左右指针又结束了。我们没有成功找到该元素。此时

  交换哨兵(基准元素)和左右指针的元素

  目前,我们可以发现哨兵的左右与我们分开了。左侧比前哨小,右侧比前哨大。我不会在背面详细介绍。

  接下来,我们将实施代码

  在这里,我使用Java实现快速分类

  我们首先封装了交换功能,以促进我们进行交流。

  因为快速行为用于递归想法。通常,当我编写递归功能时,我会想到递归的三个要素。这里的三个元素由我自己汇总,即:确定递归函数的参数和返回值,并确定终止的终止。条件,确定单层逻辑

  我们可以根据这个想法确定快速行的实现

  不需要返回值,因为我们直接修改了数组中元素的顺序。我们只需要将阵列传递。根据以上的说法,我们需要两个指针,左指针和正确的指针,以便我们可以做到我们,以便我们很容易获得参数。

  在终止条件的方面,我们已经说过上面说。当元素只有一个时,我们的排序就完成了,那么我们可以轻松地考虑它。

  单层逻辑是快速行的更重要的部分。我们知道,首先确定前哨(通常是数组的第一个元素),然后将元素放在前哨的右侧,将元素大于前哨元素小于前哨元素,将其放在左侧哨兵,然后递归调用该功能。

  我们知道我们如何进入实现过程?

  我们必须首先完成哨兵元素的元素,然后移动比哨兵大的元素,而较小的元素小于前哨。在这里,我封装了一个函数以完成它。让我们先看一下代码。

  这样,我们可以确定前哨元素,然后我们需要递归致电,因为help()函数为我们返回了前哨的索引,我们很容易考虑它。

  然后我们的快速排序完成了。让我们看一下代码的集成!

  原始:https://juejin.cn/post/709813888880695599141