實驗5:
編寫Android程序對各類查找與排序算法進行測試,提交運行結果截圖,推送代碼到碼雲。html
public void Fibonacci(int a[]) { a = b; a[0] = 0; a[1] = 1; for (int i = 2; i < a.length; i++) a[i] = a[i - 1] + a[i - 2]; } public int FibonacciSearch(int array[],int key) //a爲要查找的數組,n爲要查找的數組長度,key爲要查找的關鍵字 { if (array == null || array.length == 0) { return -1; } else { int length = array.length; int[] fb = makeFbArray(length + 2); int k = 0; while (length > fb[k] - 1) {// 找出數組的長度在斐波數列(減1)中的位置,將決定如何拆分 k++; } int[] temp = Arrays.copyOf(array, fb[k] - 1); for (int i = length; i < temp.length; i++) { if (i >= length) { temp[i] = array[length - 1]; } } int low = 0; int hight = array.length - 1; while (low <= hight) { int middle = low + fb[k - 1] - 1; if (temp[middle] > key) { hight = middle - 1; k = k - 1; } else if (temp[middle] < key) { low = middle + 1; k = k - 2; } else { if (middle <= hight) { return middle;// 此時mid即爲查找到的位置 } else { return hight;// 此時middle的值已經大於hight,進入擴展數組的填充部分,即最後一個數就是要查找的數。 } } } return -1; } }
public String HeapSort(Object a[]){ String res=""; HeapSort heapSort= new HeapSort(); heapSort.HeapSort(a); for(int i2 =a.length-1;i2>=0;i2--){ res += a[i2]+" "; } return res; } public <T extends Comparable<T>> String BinaryTreeSort(T a[]){ Comparable[] B = a; LinkedBinarySearchTree lbst = new LinkedBinarySearchTree(); String res=""; for(int i=0;i<a.length;i++){ lbst.addElement(B[i]); } Object[] sortarray = new Object[a.length]; for (int i =0;i<a.length;i++){ sortarray[i]=lbst.removeMin(); } for(int i2 =0;i2<sortarray.length;i2++){ res += sortarray[i2]+" "; } return res; } public <T extends Comparable<T>> String ShellSort(T[] data, int i){ int gap = i; int length = data.length; String res=""; while(gap>=1){ for(int index=0;index<length-gap;index++){ if(data[index].compareTo(data[index+gap])>0) swap(data,index,index+i); count2++; } gap=gap-1; ShellSort(data,gap); } for(int i2 =0;i2<data.length;i2++){ res += data[i]+" "; } return res; }
在進行測試時,須要傳入參數,所以,將代碼部分進行了修改,將方法頭申明的泛型改成了具體的數據類型。以後就拋出了異常。按理說,Object類是全部類的父類,可是卻不能轉化爲comparable。爲了使先後數據類型相同,我將數組申明爲了Object型,可是,咱們知道子類能夠繼承父類的性質,可是,子類的性質父類不必定會有,因此,將咱們能夠將傳入一個comparable的數組,而不是一個object型的。java