社区
数据结构与算法
帖子详情
讨论:集合相关算法
liaomingxue
2010-07-10 05:47:56
兄弟最近的一个算法是一个有限离散整数集合相关的问题,希望大家能给出一些建议。
1 集合:有限非负整数集合,集合的基(集合中元素的个数)最大为32768,集合可以无序也可以有序,元素是离散的不保证连续。
2 要求集合包含关系,集合与元素的属于关系,多个集合交集三个方面操作的高效算法
...全文
184
7
打赏
收藏
讨论:集合相关算法
兄弟最近的一个算法是一个有限离散整数集合相关的问题,希望大家能给出一些建议。 1 集合:有限非负整数集合,集合的基(集合中元素的个数)最大为32768,集合可以无序也可以有序,元素是离散的不保证连续。 2 要求集合包含关系,集合与元素的属于关系,多个集合交集三个方面操作的高效算法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
数据结构与
算法
分析之概论
本文探讨了
算法
效率的重要性,指出其与数据的组织方式、空间利用和
算法
设计的巧妙程度密切
相关
。介绍了数据结构的基本类型如线性、
集合
、树形和图形结构,并详细阐述了矩阵这一抽象数据类型的定义及其操作。同时,强调了
算法
的五项基本要求:输入、输出、确定性、有穷性和可行性。文章还
讨论
了衡量
算法
优劣的空间复杂度和时间复杂度,以及如何通过渐进分析评估
算法
性能。最后,提出了
算法
设计应考虑的正确性、可读性、健壮性和高效性原则。
数据结构与
算法
学习笔记——基本概念
本文介绍了数据结构的基础概念,包括数据、数据元素、数据项、数据对象和数据结构的逻辑与物理结构。
讨论
了四种基本逻辑结构:
集合
、线性、树形和图形结构,以及顺序和链式两种物理存储方式。此外,文章还阐述了
算法
的基本特性,并重点讲解了时间复杂度的计算与大O记法,强调了其在评估
算法
效率中的重要作用。作者将以C++为编程语言,继续学习线性表
相关
知识。
JavaSE
集合
相关
题
本文详细介绍了Java
集合
框架,包括List、Set、Map接口及其主要实现类如ArrayList、LinkedList、HashSet、HashMap等的特性和使用场景。
讨论
了它们之间的区别,如ArrayList基于数组,适合随机访问;LinkedList采用链表结构,适合插入删除;Map不继承Collection,提供了键值对的存储。还涉及到了
集合
操作的性能分析,如线程安全、存储方式等,并提供了
相关
代码示例,如折半查找、链表反转等。此外,文章还包含了
集合
相关
面试题,帮助读者巩固理解。
垃圾回
相关
收
算法
详解
本文详细解析了Java垃圾回收的两个主要阶段:垃圾标记阶段,包括引用计数和可达性分析
算法
;垃圾清除阶段,涉及标记-清除、复制和标记-整理
算法
。
讨论
了分代收集策略及其背后的假说,并提到了增量收集和分区
算法
的优缺点。
集合
论导引:有限与无限
本文介绍
集合
论在数学和计算机科学中的重要性。阐述了
集合
论的基本概念、操作及
相关
定理,详细讲解
集合
操作
算法
的原理、步骤、优缺点和应用领域。通过数学模型和公式举例说明,给出Python代码实践。还提及
集合
论在多领域的应用、未来趋势及面临的挑战。
数据结构与算法
33,025
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章