JavaScript贪心算法

本文详细探讨了JavaScript中贪心算法的概念、应用场景及其实现原理。通过实例解析,展示了如何利用贪心算法解决实际问题,帮助读者掌握这种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法思想。
摘要由CSDN通过智能技术生成
/**
 * 贪心算法
 * 贪心算法有:霍夫曼编码、prim和kruskal最小生成树算法、Dijkstra最短路径算法。
 * 
 * 什么是贪心算法:
 * 
 * 1、针对一组数据,问题有限制值和期望值,希望从中选出几个数据,在满足限制值的情况下,期望值最大。
 * 2、每次选择当前情况下,在对限制值同等贡献量的情况下,对期望值贡献最大的数据。
 * 3、举几个例子看下贪心算法产生的结果是否是最优的。
 * 
 * 
 * 举例子
 * 1、区间覆盖
 * 假设有n个区间,区间的起始断点和结束断点分贝是[l1,r1],[l2,r2],....[ln,rn],
 * 从这些区间中选出一部分区间,使得这部分区间满足两两不想交,最多能选出多少个区间呢?
 * 
 * 暴力解决:遍历n个区间,取其端点值,判断两个区间端点值是否相交
 * 
 * 贪心算法:先将这n个区间根据起始断点从小到大的顺序排序,然后选取到带最左端点lmin,最右端点rmax。
 * 然后每次选取区间的时候,选择,左端点跟前面已经覆盖的区间不重合的,右端点又尽量小的,这样可以让剩下的未覆盖的区间尽可能的大,就可以放置更多的区间。
 * 比如我们有区间[1,5],[2,4],[3,5],[5,9],[6,8],[9,10].
 * 我们获取到最小端点1,最大端点10,区间 [1,10]。现在我们想要选取不重合的区间来填满这个区间。
 * 首先根据区间端点大小排序,我们先选到[1,5],但是它的右端点不是最小的,所以我们选取到[2,4]区间。
 * 然后轮到[3,5],但是[3,5]和[2,4]重合了3,所以不要,
 * 轮到[5,9],右边端点不是最小的,所以我们选择了[6,8]
 * 最后选择了[9,10]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值