參考 在searching中補充查詢演算法並測試斐波那契查詢提交執行結果截圖
public static comparable fibonaccisearch(comparable data, comparable target)
comparable fibdata = new comparable[fib[idex]];
;for (int i = 0;i0)
else if (fibdata[mid].compareto(target)<0)
else
}return -1;
}//構造fibonacci數列
public static int setfibonacci()
return fib;
}
插值查詢二分查詢中查詢點計算如下:mid=(low+high)/2, 即mid=low+1/2(high-low);
通過模擬,我們可以將查詢的點改進為如下:
mid=low+(key-a[low])/(a[high]-a[low])(high-low),
也就是將上述的比例引數1/2改進為自適應的,根據關鍵字在整個有序表中所處的位置,讓mid值的變化更靠近關鍵字key,這樣也就間接地減少了比較次數。
public static comparable insertionsearch(comparable data, comparable target, int key, int low, int hight) else else if (data[mid].compareto(target) > 0)
hight = mid - 1;
else
low = mid + 1;
}return result;
}}
堆排序
public static void heapsort(comparable data)
for (int i=0;i}
軟體構造實驗三總結
軟體構造實驗三總結 這次就乙個目標實現乙個adt。本次實驗給定了五個具體應用 高鐵車次管理 航班管理 作業系統程序管 理 大學課表管理 學習活動日程管理 學生不是直接針對五個應用分別程式設計 實現,而是通過 adt 和泛型等抽象技術,開發一套可復用的 adt 及其實現,充 分考慮這些應用之間的相似性...
練習三總結
一.動態規劃,它是解決 多過程問題的一種方法,它包括兩種思想 區域性原則和區域性最優原則 即把乙個問題通過狀態轉移方程 通常是遞迴 劃分成多個子問題,然後再按步驟尋找區域性最優解,這樣按步驟得到最優解。技巧 通過做這幾道題來看,有的題目完全就是可以通過dp,遞迴等別的方法來解決,動態規劃的優點是用乙...
專題三總結
這個專題講的是動態規劃的內容,到現在為止,已經做了3 個專題了,我個人認為,動態規劃這個專題還是挺好做的,沒有剛開始老師說的的那麼難。先來點理論知識吧。所謂動態規劃,它是解決多階段決策問題的一種方法。動態規劃的指導思想就是在做每一步決策時,列出各種可能的區域性解,依據某種判定條件,捨棄那些肯定不能得...