码迷,mamicode.com
首页 > 编程语言 > 详细

一。《算法 第四版》环境搭建

时间:2018-05-21 21:12:21      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:分享图片   官网   测试   hub   随机数   java   .com   函数名   tin   

  在开始看这套教材的时候,第一个程序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

 

一。《算法 第四版》环境搭建

标签:分享图片   官网   测试   hub   随机数   java   .com   函数名   tin   

原文地址:https://www.cnblogs.com/yohzhangxin/p/9068437.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!