社区
C++ 语言
帖子详情
问一个和数据结构的问题
intersun2
2009-09-04 02:39:15
要存好多数(int),把他们存入数据结构,然后进行以下几种运算。
合并两堆数,
分开一堆数,
随机选两堆数,然后在两堆数中任选两个交换。
其中交换要进行n^2次,另两种运算要进行n次
如果就用两维数组的话(一维代表一堆数,这样最多可以表示n堆),合并要把第二堆数存进第一堆,分开的话也要把分开的那堆存入另一个数组,但是交换代价比较低,
如果用链表的话合并代价低,但是交换代价高。
有没有一个比较折衷的结构降低代价要求?貌似vector合并代价也一样高。
...全文
71
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可以满足
微软等
数据结构
+算法面试100题全部答案集锦
一年之前的10月14日,
一个
名叫July 的人在
一个
叫csdn 的论坛上开帖分享微软等公司
数据结构
+算法 面试100题,自此,与上千网友一起做,一起思考,一起解答这些面试题目,最终成就了
一个
名为:结构之法 算法之道的编程...
数据结构
面试经典
问
题
汇总
数据结构
面试经典
问
题
汇总参考资源:基础深入补充: 参考资源: 基础
数据结构
常见面试题 深入
数据结构
面试题(三)
数据结构
面试必
问
数据结构
算法常见面试考题 补充: 1.数组和链表的区别,请详细解释。 从逻辑...
程序员内功修炼 -
数据结构
(C#)
你有没有面试的时候,被
问
到
数据结构
的
问
题
,你有没有在面对需求的时候一头雾水? 五斗米老师又出新课程了,
数据结构
一直是程序员的软实力,是算法课题的基础,游戏行业对其更为看重。学习C#语言之后的能力进阶,写...
数据结构
与算法学习笔记
数据结构
指的是“一组数据的存储结构”,算法指的是“操作数据的一组方法”。
数据结构
是为算法服务的,算法是要作用再特定的
数据结构
上的。 最常用的
数据结构
预算法:
数据结构
:数组、链表、栈、队列、散列表、...
【
数据结构
面试常见
问
题
】
数据结构
作为计算机的一门基础学科,它在面试中占有很大的比重,本科阶段,我们也学过
数据结构
与算法,内容比较多,也比较难,尤其是图的应用以及各类查找和排序算法,这些也都是核心内容。
数据结构
在实际的应用中也...
C++ 语言
64,648
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章