社区
数据结构与算法
帖子详情
讨论:集合相关算法
liaomingxue
2010-07-10 05:47:56
兄弟最近的一个算法是一个有限离散整数集合相关的问题,希望大家能给出一些建议。
1 集合:有限非负整数集合,集合的基(集合中元素的个数)最大为32768,集合可以无序也可以有序,元素是离散的不保证连续。
2 要求集合包含关系,集合与元素的属于关系,多个集合交集三个方面操作的高效算法
...全文
157
7
打赏
收藏
讨论:集合相关算法
兄弟最近的一个算法是一个有限离散整数集合相关的问题,希望大家能给出一些建议。 1 集合:有限非负整数集合,集合的基(集合中元素的个数)最大为32768,集合可以无序也可以有序,元素是离散的不保证连续。 2 要求集合包含关系,集合与元素的属于关系,多个集合交集三个方面操作的高效算法
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jovial__
2010-07-11
打赏
举报
回复
用位图表示,进行按位与等相关操作,应该是最快的了,慢的话感觉有可能是实现的问题。
超级大笨狼
2010-07-11
打赏
举报
回复
[Quote=引用 1 楼 zentropy 的回复:]
包含关系:O(n1+n2) 分别判断一个集合中的元素是否在另外一个当中
多个集合交:O(n1+n2+...+nk)
[/Quote]
其实用不着,只要循环最小的集合就可以得到包含和交集
所以
集合包含关系O(min(n))
多个集合交集O(min(n))
超级大笨狼
2010-07-11
打赏
举报
回复
可以用并查集和哈希表两种做法。
本人还是喜欢哈希表,最好你使用的语言有现成的。
如果用Hash表的话。
集合包含关系O(min(n))
集合与元素的属于关系O(1)
多个集合交集O(min(n))
liaomingxue
2010-07-10
打赏
举报
回复
楼上的也不错,我们目前用的是64bit的long进行数据组织的,但感觉还是慢,应该还可以更快
jovial__
2010-07-10
打赏
举报
回复
用位图表示集合。32768用4096个8位int型就可以表示了。
包含关系:对二者进行相与, 出现原数字,那么肯定是包含关系。谁包含谁,只需比较二者的大小就行了。
属于关系:只要判断对应位是否为1就行了。
多个集合交:一样对多个集合进行按位与。然后找出对应为1的序号。
liaomingxue
2010-07-10
打赏
举报
回复
楼上的还不错,基本上是目前的实现水平。
不过,包含关系应该是O(n1)的,因为只需要对一个集合进行循环判定其元素是否在另一个集合之中(注意,求包含关系一般是单向的,即求A是否包含B,一般不需要同时要求反过来确定B是否包含A)
zentropy
2010-07-10
打赏
举报
回复
先来一块大砖头吧:)
用一个hash表表示一个集合
包含关系:O(n1+n2) 分别判断一个集合中的元素是否在另外一个当中
属于关系:O(1)
多个集合交:O(n1+n2+...+nk)
hapi-fhir-jpaserver-base-2.0-javadoc.jar
hapi-fhir-jpaserver-base-2.0-javadoc.jar
毕设&课设:智能化视频检索系统web服务端.zip
经导师指导并认可通过的大作业设计项目源码,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。
毕设&课设:涵盖C++ Primer 5th、 effective C++ 、 STL api和demos C+.zip
经导师指导并认可通过的大作业设计项目源码,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。
毕设&课设:旅游景区智能导览系统.zip
经导师指导并认可通过的大作业设计项目源码,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。
Java源码-springboot前后分离框架03医疗挂号管理系统+MySQL毕设大作业源码.zip
本项目是基于Spring Boot前后分离框架开发的医疗挂号管理系统,主要服务于医疗机构和患者,旨在实现医疗资源的优化配置和高效利用。该系统采用MySQL数据库进行数据管理和存储,适用于医疗机构日常挂号管理工作。 项目主要实现了患者信息录入、挂号预约、医生排班管理、费用结算等功能。系统允许患者在线预约挂号,选择医生和就诊时间,提高了挂号效率。医疗机构可以通过系统轻松管理患者信息和医生排班,有效处理患者挂号请求,并进行费用结算。此外,系统还提供了用户管理、权限控制等功能,确保了数据的安全性和系统的稳定运行。 该医疗挂号管理系统采用前后端分离架构,前端负责页面展示和用户交互,后端处理业务逻辑和数据存储。Spring Boot框架提供了良好的开发环境和接口支持,使得系统具有良好的可扩展性和可维护性。 毕设项目源码常年开发定制更新,系统功能和性能不断优化提升,以适应医疗机构的实际需求。源码的公开和分享,为
相关
领域的开发者提供了学习和参考的机会,希望对需要的同学有帮助。
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章