第三周,我們主要探討了 雜湊演算法 與 分治法。分治法是一個通用的演算法架構,很多我們日常生活中接觸到的演算法都可以歸類到分治法中。
本周重點
1. 雜湊演算法及其應用——MD5。大家應該明白雜湊演算法的主要三個作用,分別為:資料完整性校正、資料保密、快速尋找。遇到相應的問題,能夠想到使用雜湊演算法進行求解。
2. 分治法的步驟與要點——大問題分解成小問題、解決小問題、合并小問題的解得到原問題的解,即:分、治、合。並能夠用 合并演算法、大整數乘法、大矩陣相乘來理解分治法的要點。
3. 能夠編寫如下三個問題的程式——二分尋找、歸併排序、快速排序。
作業要求
1. 請各班學委飛信通知同學完成作業。
2. 作業計入平時成績,計分依據為大家的完成程度——態度(做 / 未做)。老師會根據大家作業的品質選擇若干學生進行評論,以及提供個人化教學的依據。請大家依據自身能力,儘可能提供高水平的作業,為提高自身能力全力以赴。3. 本次作業,老師將會抽查本班
學號位於最後5個的同學,請大家相互轉告。從第四周開始,將會引入“同伴作業互評”機制,請大家做好準備。即:每個同學閱讀本班其他5個同學的作業,並給出並匯總評價,進而達到相互學習的效果。作業內容 請大家至少完成其中的一題,鼓勵完成兩道題。把程式源碼 與 運行結果 發博文到CSDN部落格中。1. 排序。對檔案 largeW.txt(下載連結)中的資料,編程實現冒泡排序(方法名:bubbleSort) 與 歸併排序(mergeSort),把排序後的結果分別儲存到largeW_bubble.txt 和 largeW_merge.txt 中,把兩種排序結果的已耗用時間輸出到螢幕中(發博文時把已耗用時間的作為運行結果提交)。
博文標題:
第三周作業——冒泡排序和歸併排序2. 尋找。Bentley在他的著作《Writing Correct Programs》中寫道,90%的電腦專家不能在2小時內寫出完全正確的二分搜尋演算法。 二分尋找方法原型:int BSearch(int array[], int low, int high, int target ), array——含有若干整數的數組,low 與 high——尋找的起始、結束下標,target——待尋找的元素。 順序尋找:int SSearch(int array[], int low, int high, int target ),其中S——Sequence(順序) 數組array中資料來自於第1題中的排序結果檔案largeW_bubble.txt,待尋找資料來自於檔案tinyW.txt(下載連結)。請在控制台輸出不在largeW_bubble.txt的資料。
博文標題:
第三周作業——順序尋找和二分尋找
測試資料來自於《演算法》網站,敬表謝意。補充內容1. 怎樣花兩年時間去面試一個人,對大家定位自己有一定的參考價值。2. 怎樣花兩月時間去應聘互連網公司,找工作,現在開始準備,可以做什麼。3. 前程無憂網站,搜尋“演算法”及“演算法工程師”的崗位要求有哪些?命令列參數、文字檔讀寫範例程式碼(Java)
import java.io.File;import java.io.FileNotFoundException;import java.io.PrintWriter;import java.util.Scanner;public class ReadData {public static void main(String[] args) throws FileNotFoundException{//從命令列讀取兩個輸入參數,分別為待處理的文字檔,以及儲存處理結果的文字檔if(args.length<2){System.out.println("無輸入資料!");System.out.println("程式使用方法(樣本):ReadData tinyW.txt tinyW_bubble.txt");return;}//從文字檔中讀取,並對資料進行處理後(×2),儲存到相應的資料檔案中String fileInput = args[0];Scanner sc = new Scanner(new File(fileInput));String fileOutput = args[1];PrintWriter pw = new PrintWriter(new File(fileOutput));int data = 0;int num = 0;while(sc.hasNextInt()){data = sc.nextInt();num = num+1;//System.out.println(data);pw.printf("%d: %d\n", num,2*data);}pw.close();sc.close();System.out.println("運行結束,一共有"+num+"個資料。");}}