20172319 實驗三《查找與排序》實驗報告

20172319 2018.11.19-11.25

實驗三《查找與排序》 實驗報告

課程名稱:《程序設計與數據結構》  
學生班級:1723班  
學生姓名:唐才銘  
學生學號:20172319 
實驗教師:王志強老師
課程助教:張師瑜學姐、張之睿學長
實驗時間:2018年11月19日——2018年11月25日
必修/選修:必修

目錄


實驗內容

  1. 實驗三-查找與排序-1: 定義一個Searching和Sorting類,並在類中實現linearSearch(教材P162 ),SelectionSort方法(P169),最後完成測試。
  2. 實驗三-查找與排序-2: 重構你的代碼。
  3. 實驗三-查找與排序-3: 在Searching中補充查找算法並測試。
  4. 實驗三-查找與排序-4: 補充實現課上講過的排序方法:希爾排序,堆排序,二叉樹排序等(至少3個)。
  5. 實驗三-查找與排序-5(選作,加分): 編寫Android程序對各類查找與排序算法進行測試。

返回目錄html


實驗要求

  1. 完成藍墨雲上與實驗二《樹》相關的活動,及時提交代碼運行截圖和碼雲Git連接,截圖要有學號水印,不然會扣分。
  2. 完成實驗、撰寫實驗報告,實驗報告以博客方式發表在博客園,注意實驗報告重點是運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決辦法(空洞的方法如「查網絡」、「問同窗」、「看書」等一概得0分)以及分析(從中能夠獲得什麼啓示,有什麼收穫,教訓等)。報告能夠參考範飛龍老師的指導
  3. 嚴禁抄襲,有該行爲者實驗成績歸零,並附加其餘懲罰措施。

返回目錄java


實驗步驟

  1. 實驗三-查找與排序-1:
    定義一個Searching和Sorting類,並在類中實現linearSearch(教材P162 ),SelectionSort方法(P169),最後完成測試。
    要求很多於10個測試用例,提交測試用例設計狀況(正常,異常,邊界,正序,逆序),用例數據中要包含本身學號的後四位
    提交運行結果圖。
    (2分)
  2. 實驗三-查找與排序-2:
    重構你的代碼
    把Sorting.java Searching.java放入 cn.edu.besti.cs1723.(姓名首字母+四位學號) 包中(例如:cn.edu.besti.cs1723.G2301)
    把測試代碼放test包中
    從新編譯,運行代碼,提交編譯,運行的截圖(IDEA,命令行兩種)
    (2分)
  3. 實驗三-查找與排序-3:
    參考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中補充查找算法並測試
    提交運行結果截圖
    (3分)
  4. 實驗三-查找與排序-4:
    補充實現課上講過的排序方法:希爾排序,堆排序,二叉樹排序等(至少3個)
    測試實現的算法(正常,異常,邊界)
    提交運行結果截圖
    (3分,若是編寫多個排序算法,即便其中三個排序程序有瑕疵,也能夠酌情得滿分)
  5. 實驗三-查找與排序-5(選作,加分):
    編寫Android程序對各類查找與排序算法進行測試
    提交運行結果截圖
    推送代碼到碼雲
    (加分3,加到實驗中)

前期準備:

  1. 預先下載安裝好IDEA 。

需求分析:

  1. 須要瞭解各類查找及排序算法的相關知識;
  2. 須要理解掌握各類查找及排序算法的相關實現;

返回目錄git


代碼實現及解釋

本次實驗一共分爲五個提交點:

  • 實驗三-查找與排序-1:
  • 要實現的方法有:linearSearch;SelectionSort;
  • linearSearch 具體代碼以下:
public static Comparable linearSearch(Comparable[] data,Comparable target)
    {
        int index = 0;
        Comparable result = null;
        while (result==null && index < data.length)
        {
            if (data[index].compareTo(target)==0){
                result = data[index];
            }
            else {
                index++;
            }
        }
        return result;
    }
  • SelectionSort 具體代碼以下:
public static <T extends Comparable<T>> String selectionSort(int[] data)
    {
        int min;
        T temp;
        for (int index = 0; index < data.length-1; index++)
        {
            min = index;

            for (int scan = index+1; scan < data.length; scan++) {
                if (data[scan]<data[min]) {
                    min = scan;

                }
            }
            swap(data, min, index);
        }
        String result = "";
        for (int num : data)
        {
            result += num + " ";
        }
        return result;
    }
  • 實現結果截圖:

    算法

  • 實驗三-查找與排序-2:
  • 實現很簡單,只是換個包重構而已。網絡

  • 實現結果截圖:實驗時測試案例代碼寫錯了,打印會形成誤解,藍墨雲已給出正確的打印結果,如下只展現部分結果。

    數據結構

  • 實驗三-查找與排序-3:工具

  • 補充的查找算法有:二分查找;插值查找;斐波那契查找;樹表查找;分塊查找;哈希查找。
  • 實現結果截圖:

    測試

  • 實驗三-查找與排序-4:命令行

  • 補充的排序算法:希爾排序;堆排序;二叉樹排序;插入排序;冒泡排序;歸併排序;快速排序。設計

  • 運行結果截圖:



  • 實驗三-查找與排序-5:
  • 實現結果截圖:僅展現部分截圖


返回目錄


測試過程及遇到的問題

  • 問題1: 無任何記錄。
  • 解決:

返回目錄


分析總結

返回目錄


代碼託管

返回目錄


參考資料

Intellj IDEA 簡易教程

返回目錄

相關文章
相關標籤/搜索