比较排序算法

use*_*315 8 java sorting user-interface swing paintcomponent

我实现了不同类型的排序(气泡,插入,选择).知道我想比较他们的实现,如下面的每种排序(这里是冒泡排序的例子):

在此输入图像描述

例如,这是我的冒泡排序:

private static int[] bubbleSort(int[] tabToSort) {
   int [] tab = tabToSort.clone();
   boolean tabSort = false;
   while(!tabSort){
        tabSort = true;
        for(int i = 0; i < tab.length -1; i++){
            if(tab[i]> tab[i+1]){
                int temp = tab[i+1];
                tab[i+1] = tab[i];
                tab[i] = temp;
                tabSort = false;
            }
        }
    }
    return tab;
}
Run Code Online (Sandbox Code Playgroud)

我启动了GUI,并在其上放置了1000个随机点和行y=x:

@Override
    public void paintComponent (Graphics g){
        super.paintComponent(g);
        Graphics2D g2d  = (Graphics2D) g;
        g2d.setColor(Color.BLACK);
        Dimension size = getSize();
        Insets  insets= getInsets();
        int w =  size.width - insets.left - insets.right;
        int h =  size.height - insets.top - insets.bottom;

        g2d.drawLine(size.width ,0, 0, size.height);
        Random r = new Random();

        for (int i  =0; i < 1000; i++) {
           int x = Math.abs(r.nextInt()) % w;
           int y = Math.abs(r.nextInt()) % h;
           Point p = new Point(x, y);
           g2d.drawLine(p.x, p.y, p.x, p.y);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这就是我所做的:

在此输入图像描述

现在我卡住了,我不知道如何开始.有人能指出我实施的步骤/提示吗?

谢谢 :)

Ste*_*eve 4

您必须定义这些点的含义。查看动画,看起来 y 轴代表 a value,而 x 轴代表position该值数组中的 。

在您的paint方法中,您将遍历项目列表并绘制一个点,其中 x 点是数组中的位置,y 点是 y 轴上的位置。假设这些值在已知范围内。

另外,请记住图形中的 y 轴从顶部的 0 开始因此您可能需要将值转换为坐标(取决于您希望它的外观)。