課程:程序設計與數據結構
班級: 1623
姓名: 石亞鑫
學號:20162303javascript
成績: 2分
指導教師:婁嘉鵬 王志強
實驗日期:11月6日html
實驗密級: 非密級
預習程度: 已預習
實驗時間:15:25-17:15java
必修/選修: 必修
實驗序號: cs_03算法
完成教材P302 Searching.Java ,P305 Sorting.java中方法的測試
很多於10個測試用例,提交測試用例設計狀況(正常,異常,邊界,正序,逆序),用例數據中要包含本身學號的後四位
提交運行結果圖(可多張)數組
重構你的代碼
把Sorting.java Searching.java放入 cn.edu.besti.cs1623.(姓名首字母+四位學號) 包中
把測試代碼放test包中
從新編譯,運行代碼,提交編譯,運行的截圖(IDEA,命令行兩種)
提交測試代碼運行截圖,要全屏,包含本身的學號信息
課下把代碼推送到代碼託管平臺數據結構
參考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中補充查找算法並測試
提交運行結果截圖測試
補充實現課上講過的排序方法:希爾排序,堆排序,桶排序,二叉樹排序等
測試實現的算法(正常,異常,邊界)
提交運行結果截圖
推送相關代碼到碼雲上ui
Integer []arr1= {90,8,7,56,123,235,9,1,653,2303}; Integer []arr2 = {100,7,37,41,55,21,87,64,258,2303}; Integer []arr3 = {1,3,5,7,9,11,13,15,17,2303}; Integer []arr4 = {2303,10,9,8,7,6,5,4,3,2}; Integer []arr5 = {6,6,6,8,8,8,66,66,88,2303}; Integer []arr6 = {3,33,333,3333,33333,333333,3333333,33333333,333333333,2303}; Integer []arr7 = {23,233,2333,23333,233333,32,322,3222,32222,2303}; Integer []arr8 = {1,2,3,4,5,6,7,8,9,2303}; Integer []arr9 = {2,0,1,6,2,3,0,3,2,2303}; Integer []arr10 = {2017,11,6,15,46,21,87,64,258,2303};
System.out.println("90,8,7,56,123,235,9,1,653,2303"); Sorting.quickSort(arr1,0,9); System.out.print("快速排序後:"); for (int a = 0; a < arr1.length; a++) { System.out.print(arr1[a]); System.out.print(" "); } Sorting.selectionSort(arr1); System.out.println(""); System.out.print("選擇排序後:"); for (int a = 0; a < arr1.length; a++) { System.out.print(arr1[a]); System.out.print(" "); } Sorting.insertionSort(arr1); System.out.println(""); System.out.print("插入排序後:"); for (int a = 0; a < arr1.length; a++) { System.out.print(arr1[a]); System.out.print(" "); } Sorting.merge(arr1,0,5,9); System.out.println(""); System.out.print("歸併排序後:"); for (int a = 0; a < arr1.length; a++) { System.out.print(arr1[a]); System.out.print(" "); } Sorting.bubbleSort(arr1); System.out.println(""); System.out.print("冒泡排序後:"); for (int a = 0; a < arr1.length; a++) { System.out.print(arr1[a]); System.out.print(" "); }
Integer found1 = (Integer) Searching.linearSearch(arr1,45); if (found1==null) System.out.println ("Number1 was not found."); else System.out.println ("Found1: " + found1);
把測試代碼放test包中.net
public static Comparable InsertionSearch (int[] data, int target) { Comparable result = null; int first = 0, last = data.length-1, mid; while (result == null && first <= last) { mid = first+(target-data[first])/(data[last]-data[first])*(last-first); // determine midpoint if (data[mid]==(target)) result = data[mid]; else if (data[mid]-(target) > 0) last = mid - 1; else first = mid + 1; } return result; } public static Comparable SequenceSearch (Comparable[] data, Comparable target) { int i; for(i=0; i<data.length; i++) if(data[i]==target) return target; return -1; } public static Comparable FibonacciSearch (int[] data, int target) { /*構造一個斐波那契數組*/ int max_size=20;//斐波那契數組的長度 int []F=new int[max_size]; F[0]=0; F[1]=1; for(int i=2;i<max_size;++i) F[i]=F[i-1]+F[i-2]; /*定義斐波那契查找法*/ int low=0; int high=data.length-1; int k=0; while(data.length>F[k]-1)//計算n位於斐波那契數列的位置 ++k; int [] temp=new int [F[k]-1];;//將數組a擴展到F[k]-1的長度 for(int i=data.length;i<F[k]-1;++i) temp[i]=data[data.length-1]; while(low<=high) { int mid=low+F[k-1]-1; if(target<temp[mid]) { high=mid-1; k-=1; } else if(target>temp[mid]) { low=mid+1; k-=2; } else { if(mid<data.length) return mid; //若相等則說明mid即爲查找到的位置 else return data.length-1; //若mid>=n則說明是擴展的數值,返回n-1 } } return -1; }
步驟 | 耗時 | 百分比 |
---|---|---|
需求分析 | 60min | 13.6% |
代碼實現 | 300min | 68.1% |
測試 | 60min | 13.6% |
分析總結 | 20min | 4.5% |