1. 程式人生 > >20172328《程式設計與資料結構》實驗三:查詢與排序

20172328《程式設計與資料結構》實驗三:查詢與排序

20172328《程式設計與資料結構》實驗三:查詢與排序

  • 課程:《軟體結構與資料結構》
  • 班級: 1723
  • 姓名: 李馨雨
  • 學號:20172328
  • 實驗教師:王志強老師
  • 實驗日期:2018年11月19日-2018年11月25日
  • 必修選修: 必修

    一、實驗要求內容

  • 實驗1:
    • 定義一個Searching和Sorting類,並在類中實現linearSearch(教材P162),SelectionSort方法(P169),最後完成測試。要求不少於10個測試用例,提交測試用例設計情況(正常,異常,邊界,正序,逆序),用例資料中要包含自己學號的後四位
      提交執行結果圖。
  • 實驗2:
    • 重構你的程式碼。把Sorting.java Searching.java放入cn.edu.besti.cs1723.(姓名首字母+四位學號)包中(例如:cn.edu.besti.cs1723.G2301)把測試程式碼放test包中,重新編譯,執行程式碼,提交編譯,執行的截圖(IDEA,命令列兩種)。
  • 實驗3:
    • 參考http://www.cnblogs.com/maybe2030/p/4715035.html在Searching中補充查詢演算法並測試,提交執行結果截圖。
  • 實驗4:
    • 補充實現課上講過的排序方法:希爾排序,堆排序,二叉樹排序等(至少3個)測試實現的演算法(正常,異常,邊界),提交執行結果截圖。
  • 實驗5:
    • 編寫Android程式對各種查詢與排序演算法進行測試,提交執行結果截圖,推送程式碼到碼雲。

二、實驗過程及結果

  • 實驗1的解決過程及結果
  • 實驗1比較簡單,程式碼之前也實現過了,就直接做了測試用例,測試用例分為以下幾種:
  • 查詢正常
  • 找不到f的異常情況
  • 越界異常
  • 空指標異常
  • 排序正常
  • 排序的空指標異常
  • 排序的邊界測試

  • 實驗2的解決過程及結果
  • 實驗二在IDEA上很好實現,只是移動了包,重新編譯而已,但是在虛擬機器上就不太好實現了。當時遇到了一些問題,可在第三部分詳細瞭解。
  • IDEA上執行截圖

  • 虛擬機器命令列上執行截圖


  • 實驗3的解決過程及結果
  • Searing演算法中又添加了一些查詢演算法。順序查詢法、二分查詢、插值查詢、樹表查詢、分塊查詢、雜湊查詢、斐波那契查詢法。其中有些演算法的實現還是需要多多思考,在編寫的時候也遇到了一些問題。

  • 實驗4的解決過程及結果
  • 增加了氣泡排序、插入排序、希爾排序、堆排序、歸併排序、快速排序。



  • 實驗5的解決過程及結果
  • 實驗5讓我去回顧了AS的一些使用,再把已經編寫好程式碼放入即可完成。
  • 我用了一個應用程式,設定了兩個Activivty,在第一個介面上設定了跳轉到第二個介面的按鈕。


三、實驗過程中遇到的問題和解決過程

  • 問題:在做實驗2的時候,要在linuxBash上使用命令列,但是自己已經忘記的差不多了;查了好些資料,勉強做的還算順利,然後還是提示報錯了,應該是在虛擬機器上沒有junit安裝包的問題。

  • 解決辦法:因為時間緊迫,重新編寫了一個main函式來測試兩個類,但是符合題目要求,最終在命令列上執行成功。
  • 問題:做希爾排序的時候思路有點不清楚,寫了好幾次都不太對。
  • 解決及辦法:看了一些部落格,總結了一點心得就是:希爾排序就是將數字序列按照一定的間隔分成許多個子序列,在子序列中進行插入排序,然後在合併成一個數字序列;然後再去減小間隔長度,周而復始,最終等到間隔為1的時候就實現了有序。

其他(感悟、思考等)

  當遺忘太快,歇一歇奔跑的腳步,看看自己留下來了什麼很重要!

  這次實驗的很多內容讓我覺得自己對以前的學習積累有些失望,因為遺忘的太快了,有些東西還是掌握的不深刻,還需努力才好。

四、參考資料