4-3 最優合併問題 (30 分)
給定k 個排好序的序列, 用 2 路合併演算法將這k 個序列合併成乙個序列。 假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m+n-1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。 為了進行比較,還需要確定合併這個序列的最差合併順序,使所需的總比較次數最多。
在本題中需要輸出最小和最大的比較次數,經過計算發現,每次優先選擇兩個最短的序列比較,在比較完後的次數是最少的,但是每次選擇最長的兩個序列,比較完後總次數是最大的,所以本題的貪心選擇便是每次優先選擇最短的兩個序列進行比較
計算結果如下圖
本題具體的實現方法便是對陣列分別進行公升序和降序排序,之後由頭到尾進行m+n-1的操作即可
演算法第四章實驗報告
一 實踐題目 刪數問題 二 問題描述 給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。三 演算法描述 1.採用貪心法。貪心策略是 刪除從左到右第...
演算法第四章實驗報告
4 1 程式儲存問題 程式 若干個磁帶長度確定,目標是在程式上放盡可能多的磁帶。演算法 貪心演算法。貪心策略 每次儲存當前狀況下長度最小的磁帶,使儲存數量最大。步驟 1 使用sort函式對n個程式從小到大進行排序 2 按照順序將磁帶存入程式中,num 3 直到超出程式總長度l,跳出迴圈 includ...
演算法第四章實驗報告
4 1 程式儲存問題 40 分 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給 定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。即給定磁帶總容量和...