社区
C++ 语言
帖子详情
问一个和数据结构的问题
intersun2
2009-09-04 02:39:15
要存好多数(int),把他们存入数据结构,然后进行以下几种运算。
合并两堆数,
分开一堆数,
随机选两堆数,然后在两堆数中任选两个交换。
其中交换要进行n^2次,另两种运算要进行n次
如果就用两维数组的话(一维代表一堆数,这样最多可以表示n堆),合并要把第二堆数存进第一堆,分开的话也要把分开的那堆存入另一个数组,但是交换代价比较低,
如果用链表的话合并代价低,但是交换代价高。
有没有一个比较折衷的结构降低代价要求?貌似vector合并代价也一样高。
...全文
145
8
打赏
收藏
问一个和数据结构的问题
要存好多数(int),把他们存入数据结构,然后进行以下几种运算。 合并两堆数, 分开一堆数, 随机选两堆数,然后在两堆数中任选两个交换。 其中交换要进行n^2次,另两种运算要进行n次 如果就用两维数组的话(一维代表一堆数,这样最多可以表示n堆),合并要把第二堆数存进第一堆,分开的话也要把分开的那堆存入另一个数组,但是交换代价比较低, 如果用链表的话合并代价低,但是交换代价高。 有没有一个比较折衷的结构降低代价要求?貌似vector合并代价也一样高。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
intersun2
2009-09-04
打赏
举报
回复
list对于交换的运算好像不太好。而且运算是这样的:
for ( int i=0; i<n; i++ )
{
做合并或者分裂运算(随机的,各50%概率)
for(int j=0; j<n; j++)
做交换运算
}
也就是合并或者分裂各作大概n/2次, 交换做n^2次,而且是混合的。所以交换比较重要,我写的用数组(vector一样)要快些。
就想问问有没有个结构能同时满足这几个运算都比较快哈。。。ms比较困难。。。速度提升也不会很大。。。
嗯,过一会继续问问题,还是同一个算法,不过更重要一点,希望各位继续能够给出意见哈。
谢谢大家。
beyond071
2009-09-04
打赏
举报
回复
[Quote=引用 5 楼 yimsungnam 的回复:]
不管是合并还是分割, 都要进行复制原有数据, 如果连这复制的工作都觉得费效率, 那怎么做呀?
就算用链表, 比如A并B, 那就是把B的数据复制到A的后面, 或是生成一个新的C 再 A+B.
没法把复制这个操作去掉呀
[/Quote]
list的优点就在合并上了,使用list::splice(),所花费的不过只是指针的移动罢了,并没有复制
acrobatyuer
2009-09-04
打赏
举报
回复
list就OK啦!~~~
直接插入或erase可以吗???
Marshall
2009-09-04
打赏
举报
回复
不管是合并还是分割, 都要进行复制原有数据, 如果连这复制的工作都觉得费效率, 那怎么做呀?
就算用链表, 比如A并B, 那就是把B的数据复制到A的后面, 或是生成一个新的C 再 A+B.
没法把复制这个操作去掉呀
cphj
2009-09-04
打赏
举报
回复
开销上,list基本相当于链表,vector基本相当于数组
要想在时间效率上提升,只能用空间来换取
最简单的做法就是先用链表存储,进行合并、分开运算
在进行交换操作之前,把链表中的所有数复制到等价的数组中去
herman~~
2009-09-04
打赏
举报
回复
建议还是用stl容器吧
相关的算法google之
intersun2
2009-09-04
打赏
举报
回复
合并没有要求,就是选两个合并到一起。 比如
a1: 1 2 3 4 5
a2: 6 7 8 9 10
a3: 11 12 13 14
a4: 15 16 17 18 19 20 21 22 23
要合并第一个和第二个就变成
a1: 1 2 3 4 5 6 7 8 9 10
a2: 11 12 13 14
a3: 15 16 17 18 19 20 21 22 23
在继续分裂第三个(随几选一点,比如从第4个点分开),就变成
a1: 1 2 3 4 5 6 7 8 9 10
a2: 11 12 13 14
a3: 15 16 17 18
a4: 19 20 21 22 23
beyond071
2009-09-04
打赏
举报
回复
合并 分开 都有什么具体要求?
从描述的要求上看 或许list可以满足
【C
数据结构
】迷宫
问
题
本文介绍了如何使用递归和栈解决两种不同类型的迷宫
问
题
。第一部分讲解了
一个
简单的迷宫
问
题
,通过动态分配二维数组、判断上下左右四个方向以及利用栈记录路径来找到唯一解。第二部分则引入了体力值概念,探讨了地下迷宫
问
题
,需要考虑路径消耗和最短路径选择。递归过程中,通过两个栈分别记录当前路径和最短路径,确保找到最小体力消耗的出口。这两个迷宫
问
题
的解决方法深化了对递归和栈
数据结构
的理解。
数据结构
为什么那么难?每个面试官都会
问
的
问
题
!
博客从招聘趣事引入,阐述
数据结构
是将数据及其关系有效存储在计算机并操作,算法是解决
问
题
的方法。学习
数据结构
可有效存储数据、处理复杂关系数据、提高算法效率。其难学原因包括描述抽象、不知用处等。还介绍了学习的三种境界及对应学习方法。
面试官
问
你:程序=算法+
数据结构
,能深入讲讲吗?
本文从粉丝面试经历引出计算机基础中算法与
数据结构
的重要性。介绍了算法的时间和空间复杂度,如常见的时间复杂度类型。还阐述了数组、链表、树、散列表、堆、图等常用
数据结构
的特点、优缺点及适用场景,并推荐了学习算法和
数据结构
的网站。
面试必
问
的 Redis:
数据结构
和基础概念
本文深入探讨 Redis 的单线程模型及其演变,详细解释 Redis 的
数据结构
,如 SDS 和 Sorted Set 的底层实现,并分析其为何使用单进程、单线程。此外,文章还涵盖了 Redis 的内存管理,包括渐进式 rehash 的优点和潜在
问
题
,以及 Redis 的事件处理器和过期键策略。适合面试准备和提升 Redis 知识。
实践和项目:解决实际
问
题
时,选择合适的
数据结构
和算法
本文介绍了
数据结构
如数组、链表、栈、队列、树、图和哈希表,以及算法如冒泡排序、快速排序、搜索算法、图算法、动态规划等在实际
问
题
中的应用。作者强调了在编程实践中选择合适的
数据结构
和算法的重要性。,
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章