zoukankan      html  css  js  c++  java
  • Algs4-2.1.17动画-插入排序

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

    public class Insertion
    {
        public static void sort(Comparable[] a)
        {
            int N=a.length;
            for (int i=0;i<N;i++)
            {
                for(int j=i;j>0 && less(a[j],a[j-1]);j--)
                    exch(a,j,j-1);
                 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);
        }
    }

  • 相关阅读:
    浅谈MVVM
    组装数据和页面渲染
    Vuejs实现轮播图
    Vuejs选项卡案例
    选项卡案例
    js中用来操作数组的相关的方法
    js中用来操作字符串的相关的方法
    用逗号拼接字符串,并且去掉最后一个逗号
    微信分享链接或网站文章到微信朋友圈,缩略图片不显示,该如何解决?
    Spring 的介绍和目标
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9860033.html
Copyright © 2011-2022 走看看