1

我有一个学校作业,排序算法的可视化(合并排序,冒泡排序)。我查看了 Processing、JsAnim、cake 和其他几个库,但不确定它们是否对我的应用程序有用(可视化排序算法)。

我熟悉 C# 和小 javascript。任何适合我需要的图书馆?

非常感谢

4

4 回答 4

2

您尚未明确要使用哪种语言。由于您的标签,我将假定它是 java 。如果您被允许使用外部资源,您可以使用普林斯顿大学的 Robert Sedgewick 博士和 Kevin Wayne 博士编写的对象。它被称为 StdDraw,来自他们的书 Algorithms, 4th Edition。源代码的网址在这里:

http://algs4.cs.princeton.edu/stdlib/StdDraw.java.html

如果你不能使用外部资源,我会推荐 Java Swing Package。

于 2012-05-01T20:23:38.807 回答
1

我在编写并行排序时有这样的任务。我使用了 C# ZedGraph 库:

ZedGraph 教程

主要思想是将排序元素的值表示为具有适当高度的垂直线(如直方图)。

这是它在排序之前的样子:

在此处输入图像描述

之后:

在此处输入图像描述

所以我们看到所有元素都已排序。

为了可视化过程的每一步,我更改了 zedgraph 控件的值并刷新了它。在我的代码中,它看起来像:

private static void CreateGraph3(ZedGraphControl zgc)
    {
        // get a reference to the GraphPane
        GraphPane pane = zgc.GraphPane;

        // Set the Titles
        pane.Title.Text = "Sorting";
        //Clear current values
        pane.CurveList.Clear();

        // histogram high
        double[] values = new double[n];

        //fill values
        for (int i = 0; i < n; i++)
        {
            values[i] = A1[i]; //A1 is an array that is currently sort
        }

        //create histogram
        BarItem curve = pane.AddBar("Elements", null, values, Color.Blue);

        pane.BarSettings.MinClusterGap = 0.0F; //set columns references

        // update axis
        zgc.AxisChange();

        // update graph
        zgc.Invalidate();
    }

每次对某些值进行排序时,我都会调用此函数,因此我们看到了整个排序过程的视频。要将当前库包含到您的项目中,您需要:

1)右键单击您的工具箱

2)选择(或添加)项目

3) 浏览,选择 ZedGraph.DLL 并按 OK

4) ZedGraphControl 将被添加到您的工具箱中,您可以像使用其他控件一样使用它。

就这样吧,祝你好运

于 2012-05-01T20:57:43.170 回答
1

如果您不介意排除旧的或蹩脚的浏览器,您可以使用 CSS3 动画。只需设置一堆lis 代表列表中的项目,给它们position:absolute并操纵每个litop属性以将它们随机排列。

网络似乎还没有成为一个好的、权威的参考指南,但是这里有一些 CSS3 动画的例子。

于 2012-05-01T20:21:19.023 回答
1

处理应该非常适合可视化排序算法。

一个例子:http ://www.openprocessing.org/sketch/29208

于 2012-05-01T20:22:17.797 回答