鸽巢算法

2023-11-05

该算法主要用来对给定数据集进行排序的,可以快速求出第N大的数字,时间为常数时间。

缺点:数据的范围不能太大。

步骤如下:

1. 给定一个待排序数组(相当于一群鸽子),创建一个备用数组(叫鸽巢数组)并初始化元素为0,备用数组的索引(鸽巢的编号)即是待排序数组的值(鸽子的重量)。
2. 把待排序数组的值(鸽子),放到数组(鸽巢)里(即用作备用数组的索引)。
3. 遍历鸽巢数组,最重的鸽巢编号排序为1,依次递增,得到每个鸽子的序号。

 

例如:

给定数字:1 1 5 3 9 6 0 5

1. 初始化自己创建的数组

0 1 2 3 4 5 6 7 8 9

2. 数组的里面存放的是该索引出现的次数

   索引:      0           1           2         3        4         5           6         7          8             9

    次数:     1            2          0         1         0        2           1         0           0            1

3.假设从9开始排名

                   第8        第6                 第5                第3       第2                                第1

出现次数为0的不需要参与排名

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

鸽巢算法 的相关文章

  • 生成所有多集大小为 n 的分区的算法

    我一直在试图找出一种方法来生成多重集的所有不同的大小为 n 的分区 但到目前为止却空手而归 首先让我展示一下我想要实现的目标 假设我们有一个输入向量uint32 t std vector
  • 如何有效地找到距给定点最远的点(从一组点中)?

    我正在寻找一种算法或数据结构来解决以下问题 给你一组点 S 然后你会得到另一个点形式的 Q 查询 对于每个查询 找到集合中距离给定点最远的点 集合中最多有 10 5 个点和 10 5 个查询 所有点的坐标都在 0 到 10 5 范围内 我想
  • 计算两点之间的最短路线

    过去几周我一直在开发一款多人 HTML5 游戏 使用nodejs and websockets 我已经被这个问题困扰了一段时间 想象一下 我用数组实现了这个平铺地图 如下所示 1 or 棕色瓷砖 路上有障碍物 玩家无法通过 0 or 绿色瓷
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • 如何对对象进行排序? (画家算法)

    所以我有 4 个矩形形状 我正在尝试应用排序算法 画家算法 https en wikipedia org wiki Painter 27s algorithm 来知道我需要先绘制哪些形状 在 3d 中 然后绘制哪个形状 Note 相机位于右
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 列出所有 k 元组,其条目总和为 n,忽略旋转

    有没有一种有效的算法来查找所有序列k总和为的非负整数n 同时避免旋转 如果可能的话 完全避免 顺序很重要 但对于我正在解决的问题来说 轮换是多余的 例如 与k 3 和n 3 我想要得到一个如下所示的列表 3 0 0 2 1 0 2 0 1
  • 如何使用 python 有效地找到两个大文件的交集?

    我有两个大文件 它们的内容如下所示 134430513125296589151963957125296589 该文件包含未排序的 id 列表 某些 id 可能会在单个文件中出现多次 现在我想找到路口两个文件的一部分 这就是两个文件中都出现的
  • 查找其索引的乘积可被另一个数字 X 整除的对的数​​量

    给定一个数组和某个值 X 找到满足以下条件的对的数量 i lt j a i a j and i j X 0 Array size lt 10 5 我想这个问题有一段时间了 但只能想出蛮力解决方案 通过检查所有对 这显然会超时 O N 2 t
  • 优先连接,Matlab 中的复杂网络

    大家好 我现在正在 MATLAB 中研究优先附件模型 在理解以下内容时遇到一些困难 假设我一开始有 4 个节点 连接如下 time 0 1 lt gt 2 3 lt gt 4 在下一个时间步骤中 我添加一个节点和 4 个连接 然后添加另一个
  • 在矩阵/位图中查找质量簇

    这是此处发布的问题的延续 在 2D 位图上查找质心 https stackoverflow com questions 408358 finding the center of mass on a 2d bitmap正如给出的例子 它讨论了
  • 贪心技术与穷举搜索有何不同?

    我正在为一些示例问题编写伪代码 并且我注意到贪婪技术和详尽搜索之间存在令人担忧的模式 Job 1 Job 2 Job 3 Job 4 Job 5 Person 1 9 2 7 8 Person 2 6 4 3 7 Person 3 5 8
  • 如何高效生成总和在指定范围内的所有组合(在所有深度)

    假设您有一组值 1 1 1 12 12 16 如何生成总和在预定义范围内的所有可能组合 不重复 min max 例如 这里是 所有深度的 范围在13 and 17 1 12 1 1 12 1 1 1 12 16 1 16 这假设具有相同值的
  • 2D形状识别与解析算法

    我正在寻找一种算法 用于从给定的一组 x y 点检测简单形状 如矩形 三角形 正方形和圆形 我还在寻找一种方法 一旦检测到 将路径转换为更干净的形状 我已经查遍了互联网 但没有找到任何 简单 的方法 几乎所有这些对于我的简单实现来说都是高级
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 测量数组的“无序”程度

    给定一个值数组 我想找到总 分数 其中每个元素的分数是数组中出现在其之前的具有较小值的元素的数量 e g values 4 1 3 2 5 scores 0 0 1 1 4 total score 6 O n 2 算法很简单 但我怀疑可以通

随机推荐

  • 工业以太网通讯Profinet协议详解

    Profinet是通过西门子控制系统被广泛使用的工业通信协议 是一种较新的 基于以太网的工业通讯协议 Profinet使用的物理接口是一个标准的RJ 45以太网插口 Profinet电缆如下图 通过它的绿色外皮很好辨认 虽然在某些情况下 可
  • Lego_Loam--源码分析

    0 整体框架分析 翻看 LEGO Loam 的代码目录 首先进入到launch 文件中 看到
  • Spring boot Mybatis type-aliases-package错误解决

    背景 最近在练习spring boot 2 7 0整合mybatis 2 1 3时 发现在使用mybatis type aliases package配置后 xml中的别名会出现爆红的现象 错误复现 配置文件中 使用mybatis type
  • 开关电源基本原理和种类-反激-正激

    不可不知的几种开关电源及工作原理 前面分享了部分开关电源的基础知识 里面经常涉及不同种类的开关电源 虽然说 开关电源再怎么变 原理都一样 但过程细节总有区别 比如说 石墨和钻石都是同一种元素 碳 但性质有天地之别 扯远了 这次 我总结归纳了
  • **全排列实现数字1-9排序**

    在为蓝桥杯比赛备考过程中 真正体验到自己编程能力的薄弱 在一次小练习中接触全排列这一算法 基于对全排列的熟悉掌握 通过C语言代码实现数字1 9的全排列 当然也可以进行全排列的拓展 C语言实现数字1 9全排列 include
  • 计算机组成原理笔记03

    计算机组成原理笔记03 做题笔记1 内容 教材的思维导图 课后练习 计算部分 中国大学MOOC计算机组成原理 计算部分 1 教材的思维导图 在看题之前 最好先看这篇定点运算 写的特别清晰明了 2 课后练习 3 2 选择题 1 一个C语言程序
  • vue.config.js

    use strict const path require path function resolve dir return path join dirname dir const CompressionPlugin require com
  • 【学习笔记】springboot的AutoConfigurationImportSelector 、@EnableAutoConfiguraion和@import解析

    文章目录 EnableAutoConfiguration介绍 AutoConfigurationImportSelector 例子 使用importSelector 自动装配原理分析 总结 EnableAutoConfiguration介绍
  • ElasticSearch 索引查询使用指南——详细版

    我们通常用用 cat API检测集群是否健康 确保9200端口号可用 curl localhost 9200 cat health v 绿色表示一切正常 黄色表示所有的数据可用但是部分副本还没有分配 红色表示部分数据因为某些原因不可用 2
  • 面试了38位Java候选人之后,我总结出了他们关于面试中的16条通病

    都说现在Java面试卷 前段时间项目招人的时候 我刚好就作为面试官面试了一些人 在整个面试的过程中 我就发现了一些关于面试的通病 所以呢 趁着这次金 铜 九银 铁 十的机会 我就把面试别人时的感受结合自身的所见所闻 整理成16条小建议分享给
  • 【C语言/C++_数组长度问题】如何获取数组长度?

    problem 我们怎么获取数组长度 常规数组 int float double 我们怎么获取字符串数组长度 字符串数组 未完待续 Solution 1 使用sizeof 函数 获取所求数组的的总大小 再获取该数组中单个元素所占空间大小 进
  • Windows 10 系统服务的 “自动(延迟启动)” 时间

    简而言之 设置为Automatic的服务将在引导过程中启动 而设置为Delayed的服务将在引导后立即启动 启动服务延迟可以提高服务器的启动性能 并且具有安全性优势 这些优势在Adriano的文章中列出 默认情况下 自动 延迟启动 实际上是
  • 牛客网Verilog快速入门题目收获——异步复位的串联T触发器(VL2)

    一 题目要求 给出信号示意图以及波形示意图 用verilog实现两个串联的异步复位的T触发器的逻辑 二 完成题目前的知识储备 1 书写规范 根据verilog代码书写规范 低电平复位信号用 rst n 高电平复位用rst 这里题目低电平复位
  • 优秀的框架stylefeng——guns/roses

    Guns基于SpringBoot 致力于做更简洁的后台管理系统 完美整合springmvc shiro mybatis plus beetl Guns项目代码简洁 注释丰富 上手容易 同时Guns包含许多基础模块 用户管理 角色管理 部门管
  • 平均年薪超105万元,区块链开发待遇这么高?

    近段时间 没有比 区块链 更火的词了 2019年10 月 24 日时国家就区块链技术发展现状与趋势进行第十八次集体学习 学习时着重强调 区块链技术的集成应用在新的技术革新和产业变革中起到重要作用 这意味着区块链技术将加速与产业的融合 也就是
  • 【形形色色的卷积】差分卷积

    文章目录 0 前言 1 中心差分卷积 2 像素差分卷积 3 参考 0 前言 普通卷积不能显式地提取图像的梯度信息 因此不能较好地描述细粒度的纹理信息 在人脸活体检测 边缘检测等对细粒度纹理信息敏感的任务中难以取得理想的结果 针对上述问题 O
  • 梁乾东:4.10黄金下周涨跌怎么看?黄金原油最新策略解析

    黄金下周行情解析 周五 4月9日 上海黄金交易所收涨0 54 报370 11元 克 白银T D收涨0 71 报5267元 公斤 金价收高 主要由于美债收益率下跌 美元短线走弱 也给金价带来短期支撑 但由于全球经济复苏良好 这始终对金价构成下
  • idea报错一个包找不到另一个包 com.j8.enity.User cannot be cast to com.j8.enity.lx

    要注意自己定义的类是否是正确的 否则就会出现这样的错误
  • 阿里天池-全球数据智能大赛

    里面的数据解析 https tianchi aliyun com forum issueDetail spm 5176 12282029 0 0 1549467d4xr1bT postId 62363 用NotePad 或其他的软件打开se
  • 鸽巢算法

    该算法主要用来对给定数据集进行排序的 可以快速求出第N大的数字 时间为常数时间 缺点 数据的范围不能太大 步骤如下 1 给定一个待排序数组 相当于一群鸽子 创建一个备用数组 叫鸽巢数组 并初始化元素为0 备用数组的索引 鸽巢的编号 即是待排