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);
    }
}

原文地址:https://www.cnblogs.com/longjin2018/p/9860033.html

时间: 2024-11-02 06:21:15

Algs4-2.1.17动画-插入排序的相关文章

Algs4-2.1.17动画-选择排序

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

背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果)

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 动画 ThemeTransition 的概述 EntranceThemeTransition - 页面间跳转时的过渡效果 ContentThemeTransition - 内容改变时的过渡效果 RepositionThemeTransition - 位置改变时的过渡效果 PopupThemeTransition - 弹出时的过渡效果 AddDeleteThemeTransition - 添加项或删除项时的过渡效果 Reo

TimePicker控件、帧动画、补间动画

1.TimePicker控件 最近感觉每个开发平台的控件基本都差不多,在Android中控件的事件和.net控件直接写事件有一定的区别,net事件可以直接界面进行事件的绑定哈.不过在Silverlight中,如果用MVVM设计模式的话,也可以自己为控件写Command命令的,可以取代控件的事件. TimePicker控件,也就是事件控件,可以用设置时间的.在页面拖入控件后,默认是显示系统时间的. 1 <TimePicker 2 android:id="@+id/timePicker1&qu

Pyqt 以OOP方式动画的效果改变自身窗体大小

代码: 1 # -*- coding:utf8 -*- 2 from PyQt4.QtGui import * 3 from PyQt4.QtCore import * 4 import sys 5 6 class ani(QWidget): 7 def __init__(self): 8 super(ani, self).__init__() 9 self.OrigHeight = 50 10 self.ChangeHeight = 150 11 self.setGeometry(QRect(

php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法

这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式排序法 冒泡法 基本思想: 冒泡排序法 案例: 1234567891011121314151617181920212223242526 //简单的$arr=array(0,5,-1); //现在我们把函数毛片封装成函数,利用以后使用//数组默认传递的是值,不是地址,&是地址符function bubb

动画01

1 <html lang="en"> 2 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="

CoreAnimation

CoreAnimation 是一个抽象类,是所有动画的底层实现.系统提供了以下几个子类: CABasicAnimation 基础动画 ,对属性的变化作动画,只做一次动画: CAKeyframeAnimation CAAnimationGroup  CATransitoin 转场动画页面切换效果动画 CASpringAnimation 弹性动画 抖动效果 achorPoint 视图上的某一点,默认为0.5 0.5   大小为0-1之间 position 以父视图0 0为原点,确定的achorpoi

简单的选择排序(内部排序)

1 /** 2 * 3 */ 4 package com.trfizeng.selectionsort; 5 6 /** 7 * @author trfizeng 内部排序 选择排序—简单选择排序(Simple Selection Sort) 8 */ 9 public class SimpleSelectionSort { 10 11 /** 12 * 每次选择一个最小记录放在前面去 13 */ 14 public static int[] simpleSelectionSort(int[]

javaScript知识体系(中)- DOM、BOM、其它内置对象

1. DOM基本概念 1.1 DOM DOM Document Object Model 文档对象模型     就是把HTML文档模型化,当作对象来处理     DOM提供的一系列属性和方法可以视作一个工具箱,极大地方便了我们对文档的处理. 1.2 内容概念 文档(Document):就是指HTML或者XML文件     节点(Node):HTML文档中的所有内容都可以称之为节点,常见的节点有         元素节点 属性节点 文本节点 注释节点     元素(Element)