Quicksort向孩子们解释


16

去年,我读了一篇有关“幼儿园量子力学”的精彩论文。这不是件容易的事。

现在,我想知道如何用最简单的词来解释quicksort。我如何证明(或至少是手波)平均复杂度为,对于幼儿园班级,最佳和最差情况是什么?还是至少在小学?Øñ日志ñ


9
您想向一堆三岁的孩子证明快速分类的复杂性吗?祝好运。

2
尝试使用他们的语言,问题在于语言非常有限,从生物学上来说,他们还没有为这种复杂性做好准备。直到算法已经使用六到七年,才能完全遵循算法中的步骤。您正面临生物学挑战。

4
对于幼儿园,我实际上不建议这样做,但是在youtube上搜索quicksort(以及其他排序算法)可以提供许多很好的表示。我个人更喜欢匈牙利的民间舞蹈。参见youtube.com/watch?v=ywWBy6J5gz8

2
您谈论的论文标题醒目,但内容非常复杂,例如希尔伯特空间模型(Hilbert Space Model),那么您真正追求的是什么?

2
我会放弃尝试全面解释quicksort的尝试,而是尝试让孩子们理解“分而治之”。即使它们还不够大,无法完全克服递归问题,将大问题分解为小问题的想法也将非常有价值。就个人而言,对于复杂算法的不完整概念,我每天都对分治法有扎实的基础知识。
文森特·盖布尔

Answers:


14

Quicksort的核心是:

  1. 拿第一项。
  2. 将少于该第一项的所有内容移到它的左侧,将所有其余的都移到右侧(假定升序)。
  3. 每一边递归。

我认为地球上每个4岁的孩子都可以做1和2。递归可能需要更多的解释,但对他们来说不应该那么难。

  1. 在左侧重复,暂时忽略右侧(但请记住中间位置)
  2. 不断重复左侧,直到一无所获。现在返回到您忽略的最后一个右侧,并在那里重复该过程。
  3. 一旦左右两边用完,就可以完成。

至于复杂性,最坏的情况应该很容易。只要考虑一个已经排序的数组:

1 2 3 4
  2 3 4
    3 4
      4

很容易看到(证明)它是12ñ2

我不熟悉平均情况下的证明,因此我无法对此提出任何建议。您可以说,在长度为的未排序数组中,选择最小或最大项目的概率为2,那么...?2ñ


也许(d&c)递归是最好的,并且可以用固有的并行性最自然地解释。
拉斐尔

2
我会同意的。我的本能是利用一个隐喻,即将两堆东西交给您的朋友继续工作。
克里斯汀·曼

3
我声称,无论您多么努力,四岁的孩子(可能有例外)从根本上都无法掌握递归。大脑根本不够成熟。大脑发育有明确定义的阶段,例如,孩子变得自我意识,了解当前行为的未来后果,首先了解讽刺,而讽刺遵循严格控制的时间表,因此不能随意重新排列,在儿童中高度保守。我相信理解递归属于同一类别。
康拉德·鲁道夫2012年

16

如果Quicksort理解2的基本计数和除法,则实际上很容易理解。制作一堆X闪存卡,将它们编号为1–X,然后将其洗牌。然后是以下说明:

好,我们这里有(假设有20张)卡片组。我们要按顺序排列它们,所以1是第一个,然后是2,然后是3,依此类推。这是一种非常快速的方法。

首先,让我们穿过这个甲板,从中取出两堆。20的一半是10,所以任何大于10的东西都会进入右侧的堆中,而任何小于10的东西都会进入左侧的堆中。(请务必随身演示。)

现在,让我们用较小的桩做同样的事情。十的一半是多少?(有人说“五个!”)是的!因此,大于5的任何事物都会进入右侧的桩,而小于5的任何事物将会流入左侧的桩。

在这里,我们有大于10的组。所以10的一半是5,那么10加5是多少?(有人说“十五!”)因此,大于15的任何东西进入右侧的该堆中,小于15的任何东西进入左侧的该堆中。

现在,堆变得越来越小,您可以轻松查看它们并将它们整理好。看,我们到了2, 4, 5, 3, 1。因此,我们只是像这样切换它们,您可以看到1, 2, 3, 4, 5。因此,让我们对其他桩进行相同的操作,然后将桩按顺序排列,然后看!它们的顺序是1到20!

恭喜你 您刚刚教了很多孩子自适应快速排序算法的基本原理!您可以根据心智成熟程度进行更深入的研究,但要超出这一点,还需要对形式逻辑有所了解。

至于证明它的复杂性,那比较棘手。这是需要形式逻辑的事情之一,他们必须首先了解big-O表示法的基本原理。您可能首先要推迟该部分。


我认为您的示例并不好,因为您本质上是对键而不是值进行排序,并且仅通过排序就可以知道位置15的内容。
托尔比约恩Ravn的安徒生

@Thorbjørn:谁说过键/值对?这是一个简单的整数排序,用于解释基本概念。
梅森惠勒2012年

考虑一下您描述的算法不是快速排序,因为您没有使用数据透视元素。
托尔比约恩Ravn的安徒生

1
@ThorbjørnRavnAndersen:当然可以。只是他知道那里有哪些元素,因此可以选择中位数。
拉斐尔

@Raphael及其分发。卡片可以是任何值和颜色,并且带有数字在1到20之间的贴纸。因此,我指的是键/索引而不是值。
托尔比约恩Ravn的安徒生

2

这个怎么样?

拔出计算机科学-排序算法

它并不能完全涵盖您的所有问题,但这是一个好的开始。

有关此主题的更多资源在此处链接。

他们还提供了一段视频,在此处介绍了排序算法(包括快速排序)。该视频确实有助于了解年幼孩子的不同排序算法之间的区别。


太棒了!很容易理解。
Mayur Patil

1

看到这个小演示的图形化可爱之处。

快速排序


1
我认为对于孩子们来说可能太抽象了。
拉斐尔

3
不要让自己感到尴尬,但是直到最终在课堂上向我解释了quicksort之前,我都不了解该图形。
克里斯汀·曼

+1,因为这是我阅读问题时首先想到的,但是后来我成为了视觉学习者。
2012年

3
这实际上是解释快速排序如何工作的错误方法。如果您已经知道quicksort,则可以确认此动画与quicksort有关。如果您不知道quicksort,它什么也没有说,只是quicksort是一种使用某些魔术的相当快速的排序算法。根据观众的不同,您可能可以通过显示此动画来激励观众学习快速排序,但是它并没有解释有关其工作原理的任何重要信息。
伊藤刚(Tsuyoshi Ito)

动画非常漂亮,但是到目前为止,对于初学者甚至是初学者来说都是可以理解的。
jonaprieto '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.