N个数选出M个最小或最大值算法

有时候需要N个数选出M个最小或最大值算法,但并未要求选出的M个数据需要有序排列,那么这使得算法复杂度可以很低。这里给出一种可行的方法,比常见的一些方法具有更加显著的速度。

1,找出N个数据的最大和最小值。需要一次N个数据遍历。

2,根据最大最小值根据一个间隔创建一个直方图,N个数据遍历一次,进行直方图统计。例如,直方图间隔为k,则每次直方图(CurDat-MinDat)/K位置加1即可.

3,根据直方图从最小或最大处开始,找到累积大于等于M个元素的阈值,需要一次直方图遍历。

4,根据步骤3找到的阈值选出M1个数据,需要一次N个数据遍历。

5,由于M1可能略大于M,稍作后处理移除即可。可能需要对M1进行多余数据次数的排序。

本人原创方法,未做相似方法的调研。该方法的缺点则是第3步缺乏准确性,导致选出的数据会略大于需求个数,在一些极端情况下可能工作不好。但在我的应用中,未限定死选出的最小数必须为M个,只需要近似即可。因此该方法是最优的。

N个数选出M个最小或最大值算法相关推荐

  1. 算法小记(1)--判断三个数的最大,最小

    算法小记(1)--判断三个数的最大,最小 package com.zhuguozhu.p1;/*** 判断三个数的最大,最小* @author Guozhu Zhu* @date 2018/4/12* ...

  2. 最大化最小值和最小化最大值

    最小化最大值是为了压制优化目标中表现最突出的成分,最大化最小值为了提升优化目标中表现最差的成分 关于这两者的理解,我觉得这篇博文讲得非常好,浅显易懂又联系实际. 理解问题后,就要思考如何解决问题. 记 ...

  3. 最大化最小值 | | 最小化最大值

    最小化最大值. 和"河中跳房子","Agressive Cows"等最大化最小值问题正好相反的最小化最大值问题,同样用二分解决,原理基本相同,差别主要在C条件的 ...

  4. 编程中无穷大的设定 很多人可能设为0x7fffffff,这个数的确是32-bit int的最大值,符号位为0,其他的都是1 但在很多情况下,0x7fffffff会出现错误,比如溢出,这样两个无穷大数相

    很多人可能设为0x7fffffff,这个数的确是32-bit int的最大值,符号位为0,其他的都是1 但在很多情况下,0x7fffffff会出现错误,比如溢出,这样两个无穷大数相加会变成负数,还有如 ...

  5. cstring只获取到第一个数_一文讲透 Dubbo 负载均衡之最小活跃数算法

    (给ImportNew加星标,提高Java技能) 作者:why技术(本文来自作者投稿) 本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版 ...

  6. 象棋中常用的最小值最大值算法及剪枝算法

    1.象棋中通常需要推算当前局面下,每走一步之后的局面分,通常我们可以设定考虑几步棋,通常我们所说的算棋,而计算机的AI算法中最常用的就是最大值最小值算法,而剪枝算法是对最大值最小值算法的一种优化. 如 ...

  7. 一文讲透Dubbo负载均衡之最小活跃数算法

    本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版本. 为什么没有用截止目前的最新的版本号2.7.4.1呢?因为2.6.0这个版本里面有两 ...

  8. Python:实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)

    Python:实现hill climbing爬山法用来寻找函数的最大值算法 import mathclass SearchProblem:def __init__(self, x: int, y: i ...

  9. c#输入三个数选出最大的_C#习题,3、 输入三个数字,输出他们的最大值。(if) | 学步园...

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  10. c#输入三个数选出最大的_c# 如何获取三个数字中最大值呢?

    摘要: 下文c#获取三个数值中最大值的方法分享,如下所示: 实现思路: 使用if判断中内嵌if判断 即可做到取三个数中最大一个数 例: c# 中去三个数中最大值的示例 using System; us ...

最新文章

  1. Ruby on Rails路径穿越与任意文件读取漏洞分析(CVE-2019-5418)
  2. 详解语句srcImage(cv::Rect(xRoi,yRoi,widthRoi,heightRoi)).copyTo(roiImage);
  3. 物体掉落速度_重3吨的巨型“手环”掉落高速路,车辆纷纷刹车躲避
  4. BZOJ4004: [JLOI2015]装备购买
  5. 友盟分享快速集成--学习记录
  6. lol全队消息怎么发_LOL女神公开新男友?亲密合照网友酸了,随后粉丝反应太真实...
  7. 滑雪(洛谷-P1434)
  8. 多线程处理list_跟大佬聊天,被反问Redis6的多线程真的能提高性能吗?
  9. AD放置过孔按TAB键使过孔大小为设置值0.6/0.3
  10. vbs实现微信自动发送消息功能
  11. Android 系统应用-通信应用-MCC、MNC和IMSI的介绍以及运营商标识码对应表
  12. 统计学之三大相关性系数简介(pearson、spearman、kendall)
  13. NSURLSession htpps证书设置
  14. 企业微信登录报错:应用程序无法正常启动(0xc0000142);Win10应用程序无法正常启动0xc0000142错误的解决方法
  15. 最大素因子c语言,附上2021欧洲杯赛程时间表 -官网
  16. python Scapy获取局域网内的IP和mac地址
  17. Android集成阿里消息推送
  18. 支付宝微信等第三方支付机构备付金下月上交央行
  19. 不可复制的亚马逊:解码亚马逊商业模式
  20. objective c中的nil,Nil

热门文章

  1. 获取素材列表返回40004 invalid media type.获取公众号素材mediaId
  2. [玩转UE4/UE5动画系统>技能系统(GAS)篇] 二 技能 Gameplay Ability(GA)
  3. 一个简单的例子由易到难理解动态规划
  4. Error running ‘Tomcat8.5‘ port out of range-1 (moments ago)
  5. vue项目中如何下载excel表格模板
  6. 经典面试题-什么是java序列化,如何实现java序列化?
  7. JS_综合,全面性增删改查,多条件查询,排序,点击发货
  8. 工厂方法模式应用场景
  9. 免费建立一个自己的网站
  10. 2021-05-26--CHEN scary