算法-基础(二)绘图库的应用

最近看的算法4 有看到里面介绍了绘图库很好用,然后学习了一番这个几个demo大致上都体现了绘图卡的用法
在用绘图库之前得先导入jar 由于我看的是pdf 版本 没有介绍哪里有这个jar包 这个小破包让我找了很久。在下方连接中:
http://introcs.cs.princeton.e...

在上方连接中


然后导入jar到工程中就行(这都不会的话还是先去百度一下吧)
标准输出 一些pai

        print(String s)                 打印s
        println(String s)               打印s 后面接一个换行符
        println()                       换行
        printf(String s,...)            格式化输出

格式化输出有点类似C语言的输出方式 类似设参

int x = 5;
int y=3.15485498;
System.out.printf("x = %d, y = %f\n", x, y);
什么类型的值就该在什么位置上,顺序也得注意

绘图库:
我们经常用的输入输入 一般只是文本字符串,其实还有一个图像输出的的东西StdDraw,它能画出点和直线,
基本的几何图形也行比如:

 stdDraw.line()能根据给的坐标画出一条连接(x1,y1) 与 (x2,y2)d 线段
 stdDraw.point()你只要各处一个参数坐标(x,y)就能画出一个中心点

如何控制:

绘图库还包含着其他的方法比如 画布的大小 比例 直线的颜色 宽 文本字体 绘制时间(动画显示) 
颜色我一般定义一个常量类这样还调用
基本API
     setXscale(double x0,double x1)      将x范围设定在(x0,x1);
     setYscale(double y0,double y1)      将x范围设定在(y0,y1);
     setPenRadius(double r)              设定画笔的粗细(你乐意理解成,r指的是笔芯的半径)
     setPenColor(Color c)                设定画笔颜色为c
     setPenFont(Font f)                  将文本的字体设为f
     setCanvasSize(int w,int h)          设定画布大小 w为宽  h为高
     clear(Color c )                     清空画布 用颜色cf覆盖填充
     show(int t)                        显示所有图形并且保持 t 秒
我手敲了一些demo 可以参考一下
public class StdDrawDemo {
    /**
     * addPerson : hzb 2018-3-14
     * @param arags
     */
    public static void main(String[] arags ){
        demo1();
    }

    /**
     * 画个简单的函数图
     * addPerson : hzb 2018-3-14
     */
    public static void demo1(){
        int n =100;
        StdDraw.setXscale(0,n);
        StdDraw.setYscale(0,n*n);
        StdDraw.setPenRadius(.01);
        for (int i =1;i<=n;i++){
            StdDraw.point(i,i);
            StdDraw.point(i,i*i);
            StdDraw.point(i,i*Math.log(i));
        }

    }
}

生成的图片:


public class StdDrawDemo {
    /**
     * addPerson : hzb 2018-3-14
     * @param arags
     */
    public static void main(String[] arags ){
        demo2();
    }

    /**
     * 画个简单的函数图
     * addPerson : hzb 2018-3-14
     */
    public static void demo1(){
        int n =100;

        StdDraw.setXscale(0,n);
        StdDraw.setYscale(0,n*n);
        StdDraw.setPenRadius(.01);

        for (int i =1;i<=n;i++){
            StdDraw.point(i,i);
            StdDraw.point(i,i*i);
            StdDraw.point(i,i*Math.log(i));
        }

    }

    /**
     * 画个随机数组的图形形态
     * addPerson : hzb 2018-3-14
     */
    public static void demo2(){
        int n =50;
        double[] doubles = new double[n];
        for (int i=0;i<n;i++){
            //用随机函数生成随机数
            doubles[i] = StdRandom.random();

        }
        for(int i=0;i<n;i++){
            double x = 1.0*i/n;
            double y = doubles[i]/2.0;
            double rw =0.5/n;
            double rh = doubles[i]/2.0;
            //x 代表线在那个位置  y代表这个线的高度
            // rw rh 理解成平面坐标参数
            StdDraw.filledRectangle(x,y,rw,rh);

        }


    }

}

生成图片

我们将数组排序一下
通过



这样就能很直观的看出来数组的分布排序情况不用看数字那么麻烦

                                                           写的不好望指正 请发邮箱告知我问题(劳烦各位大佬了)wavesape@126.com
                                                           addPerson : hzb 2018-3-15 00:14:27

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值