1. 程式人生 > >一。《算法 第四版》環境搭建

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

9.png config font 分享圖片 技術分享 clas blank 壓縮包 TP

  在開始看這套教材的時候,第一個程序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

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