最优合并问题
来源:互联网 发布:全国路网shp数据下载 编辑:程序博客网 时间:2024/05/29 02:46
给定k个排好序的序列s1,s2,…,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并两个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需要的总比较次数最少。
#include<stdio.h>#define n 4int min(int *a){int b[n];int i,j,k;int result = 0;int count = n;int temp;for(i = 0;i < n;i ++){b[i] = a[i];}while(count > 1){for(i = 0;i < count;i ++){for(j = i + 1;j < count;j ++){if(b[i] > b[j]){temp = b[i];b[i] = b[j];b[j] = temp;}}}b[0] = b[1] + b[0];result += b[0] - 1;for(i = 1;i < count - 1;i ++){b[i] = b[i + 1];}count --;}return result;}int max(int *a){int b[n];int i,j,k;int result = 0;int count = n;int temp;for(i = 0;i < n;i ++){b[i] = a[i];}while(count > 1){for(i = 0;i < count;i ++){for(j = i + 1;j < count;j ++){if(b[i] < b[j]){temp = b[i];b[i] = b[j];b[j] = temp;}}}b[0] = b[1] + b[0];result += b[0] - 1;for(i = 1;i < count - 1;i ++){b[i] = b[i + 1];}count --;}return result;}int main(){int a[n] = {5,12,11,2};printf("the minimum is %d.",min(a));printf("the maximum is %d.",max(a));return 0;}
0 0
- 最优合并问题
- 最优合并问题
- 算法 最优合并问题
- 最优合并问题
- 最优合并问题
- 最优合并问题
- 最优合并问题
- 最优合并问题
- 【贪心】最优合并问题
- 南邮 OJ 1250 最优合并问题
- 算法笔记 //08_最优合并问题
- 最优车皮排序问题
- 最优服务次序问题
- 水处理最优方案问题
- 【dp】最优时间表问题
- 多处最优问题
- 最优程序问题
- 最优流水调度问题
- CSDN日报20170405 ——《未来的世界没有程序员》
- 最优服务次序问题
- JavaScript之基本包装类型
- 振兴中华
- 第八届蓝桥杯模拟赛本科组算年龄
- 最优合并问题
- Android Studio 错误 Duplicate files copied in APK META-INF/LICENSE.txt
- iOS数据持久化---NSCoding
- Linux系统文件目录结构详细说明
- test
- BZOJ P3436 小K的农场
- ibatis-dynamic的用法
- 设计模式之builder模式
- 斯坦福 cs106A Assignment7