不同的排序算法的可视化表现

7

有没有一些不错的排序算法可视化呢?我正在寻找一些能够在演示中使用的内容,如果可以的话,我愿意自己编写(应该不难),但如果有其他人的资源可以使用,我更愿意使用他们的。

不过,我不想使用任何小程序,因为我发现大多数都是小程序… 我希望使用轻量级的flash或画布。我需要以下几种排序算法:

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 奇偶排序

以下是不必要但很好的:

  • 归并排序
  • 快速排序
  • 堆排序
  • Raidix排序

考虑到可用资源的缺乏,我自己编写了以回答这个问题。


什么样的可视化效果?类似维基百科中的冒泡排序动画吗?还是快速排序呢?我相信你可以在那里找到其他常见算法的可视化演示。 - Jeff Mercado
@Jeff:更像是快速排序,尽管它不必进入整个被交换的箭头。 - Josh K
什么是O/E排序?您网页上的简要描述并没有很好地描述它,而且在谷歌搜索时也没有得到很好的帮助。 - Davy8
@Davy8:奇偶排序。虽然简单,但它是冒泡排序的一种优化。 - Josh K
7个回答

13

我并不喜欢已有的排序算法,于是我自己写了一个,并提供了详细解释

实现的排序算法:

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 梳排序(带有两个备选结尾)
  • 希尔排序
  • 快速排序
  • 堆排序
  • 奇偶排序
  • 基数排序

选项:

  • 随机排序
  • 部分有序排序
  • 逆序排序
  • 少量值排序

数据集:

  • 大型数据集(约250个元素)
  • 小型数据集(约50个元素,适用于速度较慢的浏览器,并且在iPhone或iPod touch等移动设备上表现出色)

我尽力确保时间差异尽可能准确,请让我知道是否有任何改进建议。


1
+1 - 刚开始研究可视化。看到它运行起来真的很有趣。对于我这种思维方式(视觉)非常有启发性。 - Peter Ajtai
+1,但是你的页面对于我的浏览器来说稍微有点宽!>_< - palswim
@Josh K:它略微超过850像素宽。可视化排序页面适合,但是在解释页面上有一个水平滚动条。 - palswim
@palsiwm:你是指博客页面吗?嗯,对于宽度<=480px的人们,该网站有一个移动版本。你为什么只能使用850?这是我可以特别针对的设备吗?如果是这样,我很乐意提供一个800像素宽的版本。给我发电子邮件或在我的最新Mobile Stylesheet帖子上发表评论。 - Josh K
@palswim:我来把宽度改成800像素,看看是否可以。我快速检查了一下,似乎没有出现任何问题。如果您使用的设备浏览器对宽度有问题,请发送电子邮件/评论告诉我。 - Josh K
显示剩余2条评论

11

不错,但是我正在寻找更多不仅仅是GIF的东西。 - Josh K

6

4
我觉得这个网站很棒,它展示了一些不同类型的图表,展示了不同算法的工作原理。此外,还包括每种排序算法的Python实现。

1

排序算法的梳理是这个领域的经典著作;如果你在谷歌中搜索这个短语,其中一个最先显示的结果将会是一个完整的视频。虽然这个电脑视频看起来有点模糊,似乎只是通过一份16毫米胶片的视频副本制作而成(我不知道原版是否还存在),不过即使如此,它仍然可能是一个很好的入门介绍。我很高兴看到它是可用的。


不需要旧视频,谢谢。 - Josh K

0

0
我刚刚写了你要找的东西(我想是),然后被引导到这个问题。你可以在http://visualsort.appspot.com/找到它。它允许你编写代码(使用CoffeeScript),然后显示发生了什么。有一些内置的排序,如果人们发送给我代码或提出具体请求,我也愿意添加更多。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接