算法分析与设计作业

一、实验目的
(1)掌握贪心算法的基本思想;
(2)能使用贪心算法求解一些相关问题;

二、实验内容
1、给定k个排好序的序列s1,s2,…,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并2个长度为m和n的序列需要m+n-1次比较。设计一个算法确定2路合并次序,使所需的总比较次数最少。

三、贪心算法基本思想
要想使总比较次数最少,需要先合并短的序列,使短序列合并最多次,使长序列合并最少次。
因此,我们每次选长度最短的序列进行合并。利用优先队列的性质,存放各序列长度。
输入一个数组,代表各序列长度。输出一个数,代表所需的最少总比较次数。

贪心算法正确性证明:https://www.cnblogs.com/DesertHero2013/p/5416703.html
类似于哈夫曼编码,参考:https://blog.csdn.net/u010425776/article/details/69367274?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-12&spm=1001.2101.3001.4242

四、实验过程

public class a {public static void main(String[] args) {int[] nums={5,12,11,2};System.out.println(min(nums));}public static int min(int[] nums){int min=0;PriorityQueue<Integer> queue=new PriorityQueue<>();for(int i=0;i<nums.length;i++){queue.add(nums[i]);}while(queue.size()>1){int sum=queue.poll();//最短的sum+=queue.poll();//次短的min+=sum-1;queue.add(sum);}return min;}
}

五、实验结果
输入:{5,12,11,2}
输出:52

给定k个排好序的序列,设计一个算法确定2路合并次序,使所需的总比较次数最少。Java代码相关推荐

  1. 问题描述 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底

    问题描述 给定一个由n行数字组成的数字三角形如下图所示.试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径 ...

  2. 给定一个完全循环赛的比赛结果,其中n个队伍两两比赛一次。每场比赛以一方胜出或者平局结束。设计一个算法,把n个队伍排序,序列中每个队伍都不曾输给紧随其后的那个队伍。说明该算法的时间效率类型。

    按照减治法的思路,假设n-1个队伍已经排好序,将第n个队伍插入序列的方法是: 扫描n-1序列,若第n个队伍赢过待扫描的队伍,则插入到这个队伍之前,否则,扫描下一个,直到第n个队伍赢过的队伍为止,插入该 ...

  3. java 计算i 出现的次数_JAVA算法:按照给定的段落统计单词出现次数(JAVA代码)...

    https://blog.csdn.net/seagal890/article/details/92067644 JAVA算法:按照给定的段落统计单词出现次数(JAVA代码) 写一个 JAVA程序以统 ...

  4. 有序序列插入c语言,已有一个排好序的序列,输入一个数插入到该序列中,使其仍然保持有序....

    满意答案 逸奠WOnQvf 2013.09.10 采纳率:47%    等级:12 已帮助:8717人 #include #define N 9 void main() { int i,j; int ...

  5. java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...

    前言 二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰. 一.题目类型 已知二叉树的两种遍历序列,请根据该序列构建二 ...

  6. 有些数的素因子只有3,5,7.请设计一个算法,找出其中第k个数

    2019独角兽企业重金招聘Python工程师标准>>> public static int removeMin(Queue<Integer> q) { int min=q ...

  7. 离散数学试设计一个算法,对给定的集合A和集合A上的一个二元关 系R,判断R是否具有对称性

    题解: 通过标记来判断集合A上的元素,如果输入的数组内的数不存在于集合A,则会被标记不是集合内(ff[]或fff[]=-1,如果存在于集合A中则ff[]或fff[]=0)当ff和fff数组内元素均为0 ...

  8. 在行列都排好序的矩阵中找数

    题目] 给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一 列都是排好序的.实现一个函数,判断K 是否在matrix中. 例如: 0 1 2 5 2 3 4 7 4 4 ...

  9. 算法练习day9——190327(“之” 字形打印矩阵、在行列都排好序的矩阵中找数、打印两个有序链表的公共部分、判断一个链表是否为回文结构)

    1."之" 字形打印矩阵 [题目] 给定一个矩阵matrix, 按照"之" 字形的方式打印这个矩阵, 例如: 1 2 3 4 5 6 7 8 9 10 11 1 ...

最新文章

  1. web login do.php,dologin.php
  2. SPOJ Pattern Find(Rabin Karp)
  3. npm install 原理(node_modules)
  4. for循环一定要指定键么 vue_第 2 篇:上手 Vue 展示 todo 列表
  5. PHP memory_get_usage()管理内存
  6. 单片机七阶音符_单片机对于音乐的编程中 ,音符的十六位数据表是怎样
  7. [Winform] DataGridView辅助类
  8. C++面试题:多态,虚函数,纯虚函数
  9. SPSS 数据编辑器界面 度量 名义 序号 标签
  10. jq遍历的基础语法之一
  11. csdn怎么添加好友
  12. three.js入门——写个小车
  13. 阿里巴巴使命、愿景、价值观、绩效管理中的六大价值观、TAE 与 TOP、聚石塔、阿里云的差异化服务
  14. re- 正则表达操作
  15. maven Web项目中POM的配置信息
  16. mumu的adb_如何使用网易mumu模拟器调试安卓程序?
  17. java openCV调用摄像头并以窗体显示出来
  18. 数据挖掘-python数据分析与挖掘实战
  19. Java中violate关键字详解
  20. MATLAB暗原色先验去雾算法的一些认识

热门文章

  1. S32K系列S32K144学习笔记——LPIT0
  2. 正则表达式匹配:包含且不包含
  3. 游戏进度:关于DirectX3D的压缩纹理格式DXT1/CB1
  4. 12对胸椎对应体表标志_胸部体表标志详解.ppt
  5. CentOS7.9 安装过程出现 error setting up base repository【已解决】
  6. vue官网学习笔记(九)组件基础
  7. 从“机械复制”到“机械原创”:人工智能引发文化生产革命
  8. linux查看cpupower模式,cpupower命令 – 调整CPU主频
  9. 阿里云购买磁盘后挂载
  10. Apple 注销 Revoke tokens