最優合併問題

2021-07-30 02:58:02 字數 674 閱讀 3824

給定k個排好序的序列s1,s2,…,sk,用2路合併演算法將這k個序列合併成乙個序列。假設所採用的2路合併演算法合併兩個長度分別為m和n的序列需要m+n-1次比較。試設計乙個演算法確定合併這個序列的最優合併順序,使所需要的總比較次數最少。

#include#define n 4

int min(int *a)

while(count > 1)}}

b[0] = b[1] + b[0];

result += b[0] - 1;

for(i = 1;i < count - 1;i ++)

count --;

} return result;

}int max(int *a)

while(count > 1)}}

b[0] = b[1] + b[0];

result += b[0] - 1;

for(i = 1;i < count - 1;i ++)

count --;

} return result;

}int main()

; printf("the minimum is %d.",min(a));

printf("the maximum is %d.",max(a));

return 0;

}

最優合併問題

include iostream include fstream include vector include queue using namespace std int a 50 n為要合併的序列個數 返回最少合併次數 int mergemin int n q.pop return sum n為要...

最優合併問題

給定k個排好序的序列s1,s2,sk,用2路合併演算法將這k個序列合併成乙個序列。假設所採用的2路合併演算法合併兩個長度分別為m和n的序列需要m n 1次比較。試設計乙個演算法確定合併這個序列的最優合併順序,使所需要的總比較次數最少。測試用例 4 序列數 5 12 11 2 序列中的元素數 輸出 7...

最優合併問題

include define k 4 int data k void sort int data max 12 11 12 11 5 12 11 5 2 k 1 min 2 5 2 5 11 2 5 11 2 k 1 按照這兩個公式求解的 int main index max k 1 最好情況 雖然...