标签:描述 决定 int 算法 还需 一个 长度 空间复杂度 收获
实践题目
7-1 最优合并问题
问题描述
给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较,还需要确定合并这个序列的最差合并顺序,使所需的总比较次数最多。
3.算法描述
要获得最小比较次数,则每次都取最小序列合并;要获得最多比较次数,则每次取最大序列合并。
while(min_mark<k-1) { min_sum= min_sum+a[min_mark]+a[min_mark+1]-1; a[min_mark]=a[min_mark]+a[min_mark+1]; a[min_mark+1]=0; min_mark++; sort(a,a+k); }
for(int hh=1;hh<=k-1;hh++) { max_sum=max_sum+b[k-1]+b[k-2]-1; b[k-1]=b[k-1]+b[k-2]; b[k-2]=0; sort(b,b+k); }
4.算法时间及空间复杂度分析(要有分析过程)
时间复杂度:排序O(nlogn)合并(n-1)(2*O(1)+O(n))=O(n^2)
空间复杂度:数组存储O( n)
5.心得体会(对本次实践收获及疑惑进行总结)
在实践过程中,贪心算法的使用过程中,最重要要决定贪心选择的方法,才能得到整体的最优解
标签:描述 决定 int 算法 还需 一个 长度 空间复杂度 收获
原文地址:https://www.cnblogs.com/yanjingyin/p/10051503.html