一。《算法 第四版》環境搭建
在開始看這套教材的時候,第一個程序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);View Codewhile(!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; } }
說明:其中的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
一。《算法 第四版》環境搭建