【发布时间】:2012-06-07 08:24:47
【问题描述】:
我在HERE 之前问过这个问题,但是我希望进一步简化快速选择(基于快速排序)的解释。我问的上一个问题包括一些示例代码(所以你知道我在说什么)。
我想知道是否有人在任何时候将快速选择的规则和指南总结为游戏,人们可以通过遵循易于理解的规则来了解算法的工作原理,这些规则可以应用于一副纸牌或数字在纸片上。
我认为快速选择算法的简化解释对于我理解它的工作原理至关重要,因为我收到的教程和解释仍然难以掌握和可视化。甚至 youtube 上将快速排序变成舞蹈的视频也没有太大帮助。
在此先感谢 Stack,到目前为止,您提供了很大的帮助。
【问题讨论】:
-
究竟你不明白什么?
-
pivot 的概念,以及在整个递归过程中如何重复选择它,以及如何拆分列表以及如何操作每个子列表。
-
枢轴只是您选择的列表中的一个点,以帮助您进行递归(例如未排序列表中的第一项)。这为您将获得的列表的两半提供了随机性,因此您更有可能在两半之间获得均匀分布。
-
但是枢轴是列表分裂的点吗?
-
你熟悉divide and conquer algorithm principle吗?因为快速排序/选择什么都不做。