使用 Matplotlib 在 Python 中进行 3D 快速排序可视化

17 Mar 2025 | 4 分钟阅读

一种流行且有效的排序算法——快速排序,采用分治法来组织列表或数组中的项。尽管快速排序通常作为一种基于文本的算法来实现,但您可以使用 Python 的 Matplotlib 以三维形式可视化该方法,以便更好地理解其工作原理。

通过将传统二维表示的排序过程增加一个维度,这种可视化允许您以三维形式进行可视化。下面概述了如何做到这一点。

通过检查和比较比较和交换数据所需的操作数量,可视化算法有助于更好地理解它们。由于 3D 算法可视化不常见,我们将使用 Matplotlib 绘制条形图并对其进行动画处理,以表示数组的成员。

数据表示:首先创建一个 3D 散点图来描绘您的列表或数组。每个数据点都是一个 3D 坐标,其中 x 轴表示元素的索引,y 轴表示其值,z 轴最初设置为一个固定值(例如,零)。

分区:快速排序的主要操作是分区,它涉及选择一个枢轴元素并将其他元素移动,使得所有小于枢轴的元素位于一侧,所有大于枢轴的元素位于另一侧。当数据点沿 x 轴移动时,通过沿 y 轴向上和向下移动枢轴元素,您可以在 3D 可视化中动态地显示此过程。

递归:快速排序使用递归算法。在您的可视化中,算法的每个递归调用都可以显示为单独的 3D 散点图,程序会继续执行。这使得更容易理解算法如何将问题分解为更小的问题。

让我们看一下快速排序的 3D 可视化

方法

  • 我们将创建一个包含随机元素的数组。
  • 出于可视化原因,在将算法应用于该数组时,将使用 yield 语句而不是 return 语句。
  • 在比较和交换之后,将生成数组的当前状态。因此,该过程将返回一个生成器对象。
  • 我们将使用 Matplotlib 动画来演示数组的比较和交换。
  • 然后将绘制图形,返回一个 Poly3dCollection 对象供后续动画使用。

实施

输出

enter array size: 5

3D Visualisation of Quick Sort using Matplotlib in Python