搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
神奇cpp
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
大数据技术原理笔记-考点版_行键查询的缺点
2
React--》UI组件库ant-design的介绍与使用_ant组件库
3
使用 Python 和 Matplotlib 绘制科学图表:实例演示_马吕斯定律曲线图
4
CRC校验码计算,以常用CRC-8为例_crc8算法
5
NLP的这一年2017:深度学习或成主角_2017nlp
6
win10+AMD显卡在安装Stable-diffusion-webui-directml报错RuntimeError: Couldn‘t checkout commit xxx for yyy._runtimeerror: couldn't checkout commit for stable
7
python interpolate_Python:插值interpolate模块
8
顺丰科技2019秋招测试工程师,Java开发工程师客观题合集_影响web前端页面性能一般不包括下面哪个
9
PyTorch 1-深度学习
10
万字长文:读懂微服务编排利器Zeebe_微服务编排引擎对比
当前位置:
article
> 正文
大数据处理之哈希表(二)--出现频率最多的top xxx 位_哈希表存每个字符出现的个数 如何对次数最大的
作者:神奇cpp | 2024-07-15 16:10:38
赞
踩
哈希表存每个字符出现的个数 如何对次数最大的
上篇文章中只是求了出现频次最高的值,可是大数据处理往往需求的是top 10 ,top 100或者某一段区间的数据。
显然只定义一个Hash a是不能放下的。如果是求出现频次top100呢?最起码定义 Hash arr[100]吧。
比如拿计数器10000长度和数据范围为32767来说。
我们最少要分4次,分别是数据取余4后 0 1 2 3的四种情况
第一次余数为0,即4的倍数这一组,我们是不是要先算出这组的top100,然后再和下组余数为1的top100相比,
这时候你应该想起的什么吧。这组的top100是有序的,而下组的top100也是有序的,两个有序数列合成一个有序数列,归并算法应该为首选。
上面说的只是如何把各分组top100变成整个top100。
但并没有说
每组的top100
该如何选择。每组的top100都要从10000万个计数器数据里提取出来,我们学习过的众多内部排序谁最适合做这种选出前几位的事情? 印象中最快的归并或快排吗?显然不是,他俩都是整体处理全部数据,而我们的需求是什么?只要前面的100个最大的,其他9900个数据的死活我们不管。
是不是
选择排序
很适合?每次选出最大的或最小的?而选择排序里的
堆排序
是不是对简单选择排序的进一步升级?因此我们就使用堆排序来做这件事。
可是。如果使用堆排序,还能使用整型数组的计数器吗?我们知道我们是靠计数器的下标和原始数据确立某种关系的。这种关系就是i*r+j。 可是堆排序的堆调整把计数器的计数次数调整了,下标却不会动。
具体来说就是如果使用int数组计数器,10000个计数器元素排下来,最后100个数据的确是最大的。可是这100个数据的下标原先对应的数据我们根本找不到了,因为我们之前是靠下标确定数据多少的。如果按照原先代码运行。得到的结果始终会是出现频次最高的100数据是该组最大的100个数据。这显然是错误的。
因此为了解决这种问题,我们必须再添加一个元素保存原始数据是多少。那么计数器的类型是不是可以更改为
Hash count[10000]; 既记录的数据的出现次数。也记录了数据是多少。使用堆排序后。count最后100位的
count[n].num 可以获取到原先的数据。
定义下代码头
这个全局变量Hash a[100]数组就是我们最终要的top100所在地。
思路说完了,那么该从何入手呢。
我们先开始修改堆排序把,修改有2个内容,一是让它适应hash,二是只让它算出100位后停止。
不清楚堆排序的可以看看
堆排序
。在此不多赘述
heapsort里加了第三个参数n。这个n就代表要求出n个最大数 放在传入的arr数组中的后100位。
每组的top100出来后,并不是真正的top100,要与之前确定好的top100归并。
归并算法老生常谈了。无需多述。
然后是主要代码,(一些具体说明在图中)
结果如下:
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/神奇cpp/article/detail/830129
推荐阅读
article
ubuntu
安装
docker
.
io
提示E: Package ‘
docker
.
io
‘ has no i...
再次执行安装命令即可。_
package
'
docker
.
io
' has no
installat
io
n
candidat...
赞
踩
article
嵌入式
物联网实战
开发
笔记-乐鑫
ESP
32
开发
环境
ESP
-
IDF
搭建【doc.
yotill
.com】_...
嵌入式
物联网实战
开发
笔记-乐鑫
ESP
32
开发
环境
ESP
-
IDF
搭建【doc.
yotill
.com】_
esp32
idf
...
赞
踩
article
YOLOv5
/v7 添加
注意力
机制
,30多种模块分析④,
CA
模块,E
CA
模块_
yolov7
添加ca注...
CA
(Coordinate Attention)模块是一种基于位置坐标的
注意力
机制
,它可以在不同空间尺度上对特征图进行自...
赞
踩
article
多条件引导图像生成-
ControlNet
安装
使用
_
controlnet
搭建
...
分割、pose等条件+文本引导图像生成,
ControlNet
使用
教程
_
controlnet
搭建
controlnet
搭...
赞
踩
article
SpringCloud
Gateway
网关
工作
原理
及入门案例_
springcloud
gatewa...
Spring Cloud
Gateway
是一种基于 Spring Framework 和 Spring Boot 构建...
赞
踩
article
【吊打
面试官
系列-
ZooKeeper
面试题
】
简述
ZAB
协议
?...
简述
ZAB
协议
?【吊打
面试官
系列-
ZooKeeper
面试题
】
简述
ZAB
协议
? 大...
赞
踩
article
No
module
named
‘
t
ransformers
.
models
.
au
t
o
.
t
okeniza...
本文介绍了如何在使用`pipins
t
allpy
t
orch-
t
ransformers
`安装Transformers库后,遇...
赞
踩
article
Canal
数据
同步...
早期阿里巴巴在杭州和美国部署机房,存在跨机房同步的业务需求,最初的实现是基于业务触发的方式 ,不是是很方便, 2010 ...
赞
踩
article
JDK
如此之多
,
应该
选
择哪个厂子下面的
JDK
呢?_
jdk
选
哪个公司...
本文讨论了Java开发者在众多
JDK
版本中应如何
选
择
,
重点介绍了AdoptiumEclipseTemurin(原Adop...
赞
踩
article
SpringCloud之微
服务
API
网关
Gateway
介绍_
spring
apigateway
...
如果没有网关,难道不行吗?功能上是可以的,我们直接调用提供的接口就可以了。那为什么还需要网关?因为网关的作用不仅仅是转发...
赞
踩
article
NLP
干货: (1)
基于
机器
学习
的
文本
分类
_nlp干货
基于
机器
学习
...
本文介绍了
文本
分类
的
基本流程,包括数据预处理(清洗、分词、去停用词)、特征提取(词袋模型和TF-IDF)、以及模型选择(...
赞
踩
article
ElasticSearch
与
Mysql
对比
(
ElasticSearch
常用方法大全,持续更新)_el...
ElasticSearch
是一个开源的搜索引擎,可以它可以被下面这样准确的形容:一个分布式的实时文档存储,每个字段可以被...
赞
踩
article
数据结构
作业
代码
_
数据结构
实践
代码
作业...
数据结构
作业
代码
顺序表基本操作快速排序单链表的基本操作单链表实现前插后插双向循环链表的基本操作栈的使用(斐波+回文+进制...
赞
踩
article
专题八:
贪心
算法
_将
数组
按照
绝对值
大
小
从大到
小
排序...
贪心
的本质是选择每一阶段的局部最优,从而达到全局最优。
贪心
算法
并没有固定的套路。所以唯一的难点就是如何通过局部最优,推出...
赞
踩
article
ZYNQ
使用
AXI
DMA
(
Scatter
/
Gather
)模式进行PL与PS
数据
交互附源码(
ps
端移...
ZYNQ
使用
AXI
DMA
(
Scatter
/
Gather
)模式进行PL与PS
数据
交互附源码#include "x
axi
d...
赞
踩
article
el
-
tree
关闭
展开和
关闭
树结构
的
动画
效果_
el
-
collapse
关闭
动画
...
关闭
el
-
tree
树结构
展开和
关闭
的
动画
效果_
el
-
collapse
关闭
动画
el
-
collapse
关闭
动画
...
赞
踩
article
Linux
系统安全
——
iptable
s相关总结_
linux
查看
iptable
规则
...
iptable
s详解_
linux
查看
iptable
规则
linux
查看
iptable
规则
...
赞
踩
article
顺序
表算法
题
(C
语言
)_
可以
用
顺序
表解决
的
c
语言
题
...
一些基础
题
目_
可以
用
顺序
表解决
的
c
语言
题
可以
用
顺序
表解决
的
c
语言
题
...
赞
踩
article
OpenStack
Yoga
版
安装
笔记
(
六)
glance
练习...
Glance api处理来自用户端
(
OpenStack
Client等)的请求,如果是读写镜像元数据,则对
glance
d...
赞
踩
article
【
hive
】- 使用
insert
into
/
insert
overwrite
插入数据到
静态
分区
、动态...
使用
insert
into
/
insert
overwrite
插入数据到
静态
分区
、动态
分区
、动
静态
分区
_
hive
inse...
赞
踩
相关标签
ubuntu
docker
linux
物联网
笔记
单片机
arm开发
嵌入式硬件
YOLO
深度学习
计算机视觉
人工智能
目标检测
pytorch
ControlNet
Python
AIGC
spring cloud
gateway
java
ZooKeeper
transformers
models
auto
tokenization