上千万或上亿数据(有反复),统计当中出现次数最多的N个数据. C++实现

上千万或上亿的数据,如今的机器的内存应该能存下。所以考虑採用hash_map/搜索二叉树/红黑树等来进行统计次数。

然后就是取出前N个出现次数最多的数据了,能够用第2题提到的堆机制完毕。

#include "IOSTREAM"
#include<hash_map>
#include<string>
#include<map>
using namespace std;

int main(void)
{
	//海量待统计数据
	char* a[5]={"ab","b","ccc","ab","ccc"};

	//哈希映射统计频率
	hash_map<char *,int> hp;
	for(int i=0;i<5;i++)
	{
		if(hp.find(a[i])!=hp.end())
		{
			hp[a[i]]++;
		}
		else
		{
			hp[a[i]]=1;
		}
	}

	//对字符串按出现频率排序
	multimap<int,char*> m;
	hash_map<char*,int>::iterator it;
	for(it=hp.begin();it!=hp.end();it++)
		m.insert(pair<int,char*>(it->second,it->first));

	//输出出现频率最高的两个字符串
	multimap<int,char*>::iterator t=m.end();
	for(int i=1;i<=2;i++)
	{
		t--;
		cout<<t->second<<endl;
	}

}
时间: 2024-10-05 22:41:48

上千万或上亿数据(有反复),统计当中出现次数最多的N个数据. C++实现的相关文章

上千万或上亿数据(有重复),统计其中出现次数最多的N个数据. C++实现

上千万或上亿的数据,现在的机器的内存应该能存下.所以考虑采用hash_map/搜索二叉树/红黑树等来进行统计次数.然后就是取出前N个出现次数最多的数据了,可以用第2题提到的堆机制完成. #include "IOSTREAM" #include<hash_map> #include<string> #include<map> using namespace std; int main(void) { //海量待统计数据 char* a[5]={&quo

对于上千万甚至上亿的数据,如何正确的删除?

[原创] 波波说运维 2019-06-22 00:01:00 概述 当我们的系统进入海量数据时代后,很多过去看起来轻松简单的事情就变得比较复杂.此时,就需要我们采取一些独特的技术和技巧,来避免因此带来的一些问题. 如果一个数据表要进行删除,而数据表对应的数据量很大,对应空间多,此时要进行数据表drop需要面对一些困难. 首先是系统内存资源和CPU资源的使用峰值.集中进行drop操作,系统会进行数据表结构的回收,对应数据分区和数据块的回收.当数据表很大的时候,这个过程自然很长,对CPU来说消耗时间

基础算法7:从数据库某个字段中取出现次数最多的几条数据形成“热门xxx”

如题所示,有时候我们需要从数据库中的某个表中取出某个字段的数据,并根据其出现的频率在前台页面中显示"热门城市"."热门商品"等信息.比如说我们要取出所有航线中的"热门城市",可以这样做: (1)数据在数据库中是这样的: 在这里,我们需要查出所有的"出发城市"和"到达城市",并对每个城市进行计数根据其出现次数来取出几个出现次数最多的城市为热门城市 注:将多个字段的数据合并在一起并且不经过去重处理,可以使用下面

Spark实战--寻找5亿次访问中,访问次数最多的人

问题描述 对于一个大型网站,用户访问量尝尝高达数十亿.对于数十亿是一个什么样的概念,我们这里可以简单的计算一下.对于一个用户,单次访问,我们通常会记录下哪些数据呢? 1.用户的id 2.用户访问的时间 3.用户逗留的时间 4.用户执行的操作 5.用户的其余数据(比如IP等等) 我们单单从用户id来说,比如10011802330414,这个ID,那么我们一个id差不多就是一个long类型,因为在大量数据存储的时候,我们都是采用文本存储.因此对于5亿个用户ID,完全存储在磁盘当中,大概是5G的大小,

继上一个坑有一个坑(微信小程序一键登录之无法识别json数据)

前言:  作为一个运维人员不背锅,谁背呢! 正文: 开发人员和前端人员写好了微信小程序,然后坑出现了,安卓上打死不能一键登录.然后开始排查, 开始从数据上着手,不管是使用postman进行模拟测试数据,还是通过抓包查看数据,无任何问题,但是就是微信小程序无法判断改数据是json数据. 后来继续测试,打console.log 断点,抛数据出来查看发现 该数据 确实也存在问题,直接使用res.data 使用typeof 查看 确实为字符串,但是使用JSON.parse 却抛的微信小程序 百度都不能百

TCP Incast 问题TCP INCAST解决思路 应用场景:在集群文件系统内,客户端应用请求某个逻辑数据块(通常情况下一个读数据块大小是1MB),该数据块以条带化方式分别存储在几个存储服务器上,即采用更小的数据片存储(32KB,256KB等),这种小数据片称为服务器请求单元(SRU)。只有当客户端接收到所有的服务器返回的其所请求数据块的SRU后才继续发送出下一个数据块请求,即客户端同时向

TCP INCAST解决思路 应用场景:在集群文件系统内,客户端应用请求某个逻辑数据块(通常情况下一个读数据块大小是1MB),该数据块以条带化方式分别存储在几个存储服务器上,即采用更小的数据片存储(32KB,256KB等),这种小数据片称为服务器请求单元(SRU).只有当客户端接收到所有的服务器返回的其所请求数据块的SRU后才继续发送出下一个数据块请求,即客户端同时向多个存储服务器发起并发TCP请求,且所有服务器同时向客户端发送SRU. 出现的问题: 1)         这种多对一的服务器向客

读取网上gson数据,展示到gridview上,然后上拉加载,下拉刷新

NetWorkUtil.class package com.example.liangminghui20160425; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpC

人口上千万,石家庄干洗行么发展

作为河北省的省城,石家庄干洗作为省内干洗行业的领军队伍,其发展速度相当之快.在整个干洗行业前景大好的时候,各大品牌也都看到了石家庄的秀色可餐.洁希亚国际洗衣在认定石家庄有巨大潜力的同时,已经展开了攻势. 据相关数据显示,石家庄市2015年底常驻人口已上千万,且每一年呈加速上升趋势,高速的人口增长为石家庄干洗行业的未来打响了信号枪.洁希亚带着浩瀚的品牌军也开始入驻,目前石家庄干洗发展空间巨大,洁希亚凭借其优秀的品牌影响力呼吁创业人士,全市干洗店铺悄然陡增. 洁希亚干洗国内知名十大洗衣品牌之一,在市

关于软件知识存在认识上和方法上的误区

我们原先掌握的关于软件知识不是太贫乏就是不恰当,存在认识上和方法上的误区. 软件的生命性 软件是有生命的,这可能是老调重弹了,但是因为它事关分层架构的原由,反复强调都不过分. 一个有生命的软件首先必须有一个灵活可扩展的基础架构,其次才是完整的功能. 目前很多人对软件的思想还是焦点落在后者:完整的功能,觉得一个软件功能越完整越好,其实关键还是架构的灵活性,就是前者,基础架构好,功能添加只是时间和工作量问题,但是如果架构不好,功能再完整,也不可能包括未来所有功能,软件是有生命的,在未来成长时,更多功