社区
数据结构与算法
帖子详情
求高效的C/C++打散函数。
Balancer
2015-01-30 10:23:35
描述:有一个数组,数组里有1000万个数据,这些数据的取值一共有六种。
问题:如果构建一个函数,将数组内的数据比较均匀的分布。
例如:
函数输入:[a,a,a,b,c,c,c,g,f,d]
函数输出:[a,g,c,a,f,a,c,d,a,c]
备注:因为数据量特别大,希望函数的最坏情况时间复杂度尽可能的高效。
谢谢。
...全文
470
7
打赏
收藏
求高效的C/C++打散函数。
描述:有一个数组,数组里有1000万个数据,这些数据的取值一共有六种。 问题:如果构建一个函数,将数组内的数据比较均匀的分布。 例如: 函数输入:[a,a,a,b,c,c,c,g,f,d] 函数输出:[a,g,c,a,f,a,c,d,a,c] 备注:因为数据量特别大,希望函数的最坏情况时间复杂度尽可能的高效。 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qjgdftxmu
2015-03-08
打赏
举报
回复
可以参考一下洗牌算法
斩不断的风
2015-02-22
打赏
举报
回复
random shuffle
yfk
2015-02-10
打赏
举报
回复
考虑用交换的思路去做 java 代码: public class Test { public void ArrayRandom(ArrayList<Integer> array){ for(int i = array.size()-1; i>=0; i--){ int iRandom = (int)(Math.random()*i); //交换 Integer tmp = array.get(iRandom); array.set(iRandom, array.get(i)); array.set(i, tmp); } } public static void main(String args[]) { ArrayList array = new ArrayList<Integer>(); array.add(1); array.add(1); array.add(2); array.add(2); array.add(2); array.add(2); array.add(3); array.add(4); System.out.println(array); Test test = new Test(); test.ArrayRandom(array); System.out.println(array); } }
kerbcurb
2015-02-06
打赏
举报
回复
为了防止整形数组内容重复,你也可以采取上述方法生成那个整形数组,具体是根据有无被生成过作一判断
kerbcurb
2015-02-06
打赏
举报
回复
随机生成一个整形数组,整形数组里面存你的数据的下标,然后按整形数组下标顺序访问你的数据 long intarray[10000000]; type your_data[10000000]; random(intarray);//伪代码 for (i = 0; i< M;i++) { .......=your_data[intarray[i]]; }
dianyancao
2015-02-01
打赏
举报
回复
对这6个元素按其hash计数,得到每个元素x出现的次数p(x) 之后设计一个等概率分布的随机数发生器来产生x,当生成的x的个数等于p(x)时,不再产生x 这样不用存储输出,只需一个随机数发生器及其配置数据即可得到比较均匀的分布数据
就想叫yoko
2015-02-01
打赏
举报
回复
怎么3a变4a了
C/
C++
| sizeof()
函数
C语言中 判断数据类型长度符的关键字 用法 sizeof (类型说明符) sizeof 表达式 定义 sizeof是C/
C++
中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN上的解释为: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including ag...
C/
C++
sizeof
函数
详解
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“ 辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。 但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不 适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话, 那么这篇文章对你或许有所帮助。 菜鸟我对
C++
的掌握尚未深入,其中不乏错误,
C/
C++
socket网络编程
socket多进程编程,tcp和udp流程图,socket
函数
, bind
函数
,listen
函数
,accept
函数
,connect
函数
,recv、recvfrom、read
函数
,send、write、sendto、sendmsg
函数
,close、shutdown
函数
,htonl、ntohl、htons、ntohs本地主机和网络字节序转换,inet_addr、inet_aton、inet_ntop,IP地址转换,setsockopt,fcntl,getpeername与getsockname
C/
C++
代码规范(参考Linux内核Coding Style)
最近在阅读别人给我的一个项目的代码,发现格式比较乱,导致阅读代码效率很低,特意学习了Linux内核代码规范Coding Style,将其整理在这里。
C/
C++
介绍sizeof
函数
0. 前向声明 sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。 但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。 菜鸟我对
C++
的掌握尚未深入,
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章