zoukankan      html  css  js  c++  java
  • 一。《算法 第四版》环境搭建

      在开始看这套教材的时候,第一个程序Binary Search就不能正常运行下去,因为作者提供一些常用的方法,需要用到他提供的jar包,同时需要用到他提供的测试数据,为了便于代码的管理,我采用ecilpse对算法进行实现和调试,下面主要介绍一下环境的准备。

    一。环境准备

      在官网下载需要的jar包和数据 地址  ,下载jar包和一个数据集的压缩包,如下图

     

    二。创建项目

    2.1首先配置环境变量,将下载下来的jar包,配置到classpath中

    2.2创建一个普通的java项目,导入刚才的jar包

    以及解压后的数据,整体目录结构如下:

    2.3编写测试代码,主要是二分查找的方法,放在定义的包名下面

    import java.util.Arrays;
    
    import edu.princeton.cs.algs4.In;
    import edu.princeton.cs.algs4.StdIn;
    import edu.princeton.cs.algs4.StdOut;
    
    public class Test {
    
        public static void main(String[] args) {
             int[] whileList = In.readInts(args[0]);
                Arrays.sort(whileList);
                while(!StdIn.isEmpty()){
                    int key = StdIn.readInt();
                    if(rank(key,whileList)<0){
                        StdOut.println(key);
                    }
                }
        }
        
         public static int rank(int key,int[] a){
                int lo = 0;
                int hi = a.length -1;
                while(lo <= hi){
                    int mid = lo + (hi - lo) / 2;
                    if(key < a[mid]) hi = mid -1 ;
                    else if(key > a[mid]) lo = mid + 1;
                    else return mid;
                }
                return -1;
            }
    
    }
    View Code

    说明:其中的StdIn,StdOut方法是作者自定义的标准输入输出方法,根据函数名就可以知道具体想要实现的功能。

    2.4测试

      因为本书中的很多代码,都需要重定向(本文附录会介绍本书中的重定向和管道),例如二分查找,书中给出的查询方式是:java Test tinyW.txt < tinyT.txt ,在eclipse中采用如下的方式来进行测试:

    选中执行类run as --> Run  Configurations --> java Application (下面的执行类) -->Common

    Input File: 去选择要重定向的文件(<之后的文件)注意:这里的文件路径需要完整的路径

    Arguments:输入main函数中 agrs数组接受的参数,路径地址可以是相对地址。

      附录:重定向和管道

    本书中的两个例子(产生随机数和计算平均数):

    1.重定向:

    java RandomSeq 100 100.0 200.0 > data.txt  ====>回家执行的结果通过标准输出StdOut.print()输出到 data.txt的文件中,而不会打印在控制台

    java Average < data.txt ===> 通过标准输入StdIn,将data.txt文件中的内容读取出来,传给Average类进行操作。

    2.管道:将一个程序的输出当做另一个程序的输入

    java RandomSeq 100 100.0 200.0  | java Average  ===>将RandomSeq程序产生的100个平均数 最为 Average计算平均数的参数(这些动作的实际发生顺序是取决于操作系统)

    最后教材中所有算法我都会实现出来,并提交到github中。项目地址:https://github.com/yohzhangxin/Algorithms

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 数的统计
    Java实现 蓝桥杯VIP 算法训练 和为T
    Java实现 蓝桥杯VIP 算法训练 友好数
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 暗恋
    Java实现 蓝桥杯VIP 算法训练 暗恋
    测试鼠标是否在窗口内,以及测试鼠标是否在窗口停留
    RichEdit 各个版本介绍
  • 原文地址:https://www.cnblogs.com/yohzhangxin/p/9068437.html
Copyright © 2011-2022 走看看