課程:《程序設計與數據結構》 班級: 1823 姓名: 孫銘澤 學號:20182305 實驗教師:王志強 實驗日期:2019年11月4日 必修/選修: 必修
1.定義一個Searching和Sorting類,並在類中實現linearSearch,SelectionSort方法,最後完成測試。
要求很多於10個測試用例,提交測試用例設計狀況(正常,異常,邊界,正序,逆序),用例數據中要包含本身學號的後四位
提交運行結果圖。html
2.重構你的代碼
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位學號) 包中(例如:cn.edu.besti.cs1823.G2301)
把測試代碼放test包中
從新編譯,運行代碼,提交編譯,運行的截圖(IDEA,命令行兩種)java
3.參考http://www.cnblogs.com/maybe2030/p/4715035.html ,學習各類查找算法並在Searching中補充查找算法並測試
提交運行結果截圖算法
4.補充實現課上講過的排序方法:希爾排序,堆排序,二叉樹排序等(至少3個)
測試實現的算法(正常,異常,邊界)
提交運行結果截圖(若是編寫多個排序算法,即便其中三個排序程序有瑕疵,也能夠酌情得滿分)數組
5.編寫Android程序對實現各類查找與排序算法進行測試
提交運行結果截圖
推送代碼到碼雲(選作,加分)數據結構
2.將第一部分中的兩個類移動至要求的包中,並將測試代碼放入test包中,在test代碼中import cn.edu.besti.cs1823.S2305
並進行測試。
學習
3.參考已給的博客連接,學習各類查找算法並在Searching中補充查找算法並測試
這一實驗題稍有難度,首先要仔細閱讀這個博客來理解學習博客中的查找算法,再將這些算法消化吸取本身去編寫。由於博客中的代碼不是Java語言編寫,咱們要先學習理解這些代碼,搞懂這一部分是什麼意思,對數據有什麼操做,徹底理解以後,咱們才能進行本身的編寫。在IDEA上對第一題的Searching類進行補充擴展,這一過程會出現不少錯誤,須要一點一點糾正。
測試
4.補充實現課上講過的排序方法:希爾排序,堆排序,二叉樹排序等
與上一個實驗差很少,先複習回想這些排序方法,再去實現他們,尤爲要注意的是,這些排序方法的使用格式不同,有些排序方法須要對排序的範圍進行輸入限制。雖然都是所有進行排序,可是由於代碼功能的限制,必須手動輸入上下限。
命令行
問題1:在編寫linearSearch方法時,將目標元素設置爲哨兵後,將關鍵字序列數組一一放入哨兵後的數組,可是在查找時卻出現的NullPointException的報錯提示。設計
問題1解決方案:單步調試了幾遍時候發現,是我在將關鍵字數組a置入有哨兵的數組b時出現問題。倒置最後一位關鍵字數組放入後循環並無終止,而是繼續試圖將下一位放入數組b中。可是那個位置並無數據,因此自動拋出空指針異常。指針
問題2解決方案:後來從新捋了一下思路,發現本身對循環的使用有些問題,致使實際處理起來pop方法時出現彈出元素後造成空棧,可是循環沒有中止,繼續-1並對數組進行操做。致使出現了-1的數字。