Algs4-2.1.17动画-选择排序

Posted longjin2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Algs4-2.1.17动画-选择排序相关的知识,希望对你有一定的参考价值。

2.1.17动画。修改插入排序和选择排序的代码,使之将数组内容绘制成正文中所示的棒状图。在每一轮排序后重绘图片来产生动画效果,并以一张“有序”的图片作为结束,即所有圆棒均已按照高度有序排列。提示:使用类似于正文中的用例来随机生成Double值,在排序代码的适当位置调用show()方法,并在show()方法中清理画布并绘制棒状图。

public class Selection
{
    public static void sort(Comparable[] a)
    {
        int N=a.length;
        for (int i=0;i<N;i++)
        {
            int min=i;
            for (int j=i+1;j<N;j++)
                if (less(a[j],a[min])) min=j;
            exch(a,i,min);
            showAnimation(a);
        }
    }
   

    private static boolean less(Comparable v,Comparable w)
    { return v.compareTo(w)<0;}
   
    private static void exch(Comparable[] a,int i,int j)
    {
        Comparable t=a[i];
        a[i]=a[j];
        a[j]=t;
    }
   
    private static void show(Comparable[] a)
    {
        for (int i=0;i<a.length;i++)
            StdOut.print(a[i]+" ");
        StdOut.println();
    }
   
   
    private static void showAnimation(Comparable[] a)
    {
       StdDraw.setXscale(0.0,a.length);
       StdDraw.setYscale(0.0,a.length);
       StdDraw.setPenRadius(0.005);
       StdDraw.pause(100);
       StdDraw.clear(StdDraw.GRAY);
       StdDraw.setPenColor(StdDraw.BLACK);
        for(int i=0;i<a.length;i++)
        {
            StdDraw.line(i*1.0,0.0,i*1.0,(Double)a[i]*1.0);
        }
    }
    public static boolean isSorted(Comparable[] a)
    {
        for (int i=0;i<a.length;i++)
            if(less(a[i],a[i-1])) return false;
        return true;
    }
   
    public static void main(String[] args)
    {
        int N=Integer.parseInt(args[0]);
        Double[] a=new Double[N];
        for(int i=0;i<N;i++)
            a[i]=StdRandom.uniform(0.0,N*1.0);
        //
        StdDraw.pause(5000);
        sort(a);
    }
}



































































以上是关于Algs4-2.1.17动画-选择排序的主要内容,如果未能解决你的问题,请参考以下文章

看动画学算法之:排序-选择排序

经典算法动画解析系列:选择排序

动画看懂选择排序

动画选择排序

跟着动画学Go数据结构之选择排序 #私藏项目实操分享#

三分钟快速记住 选择排序算法!