【发布时间】:2014-01-31 19:22:19
【问题描述】:
我在大学里试图学习如何使用快速排序。我将在几周内制作一个程序,但首先我想了解它是如何工作的。我发现了一个看起来可以帮助我理解的家庭作业问题。唯一的问题是,在查看了 Wikipedia 和其他几个网站之后,我感到困惑和绝望。
对序列 A = { 6, 4, 3, 9, 4, 7, 5 } 应用快速排序。而不是基于三中位数的枢轴,使用 第一个子序列元素。 (这引入了最坏情况下性能的风险,但它使 问题更容易手动解决。) 如下所示展示您的作品。通过在元素周围放置一个正方形来指示元素何时成为轴心。 稍后,通过在元素下划线来表明元素是/曾经是枢轴。使用点标记和箭头指示 左右搜索要交换的元素的进展情况。按照递归的要求进行工作: 也就是说,在右子序列之前处理左子序列。 也就是说,
6 4 3 9 4 7 5 识别枢轴
5 4 3 9 4 7 6 将轴移开并搜索要交换的元素
有人可以逐步向我解释这是如何工作的吗?
【问题讨论】:
-
有许多可用的分区算法(用于围绕枢轴重新排列序列的算法)。你能描述一下你应该使用哪一个吗?
-
does this link help you?,工作原理的解释,以及它在不同情况下的作用的可视化。
-
我认为维基百科解释得很好...en.wikipedia.org/wiki/Quicksort