一个排好序的数组A,长度为n,现在将数组A从位置m(m

yjugdujcm 2011-10-06 05:09:19
如题:一个排好序的数组A,长度为n,现在将数组A从位置m(m<n,m已知)分开,并将两部分互换位置,设计一个O(n)的算法实现这样的倒置,只允许使用一个额外空间。 NND,网上都是一个样子,看来都是Copy的,大家有没有什么好的想法,欢迎讨论一下啊
...全文
269 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjugdujcm 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
http://topic.csdn.net/u/20090119/18/82ddc536-a406-4ef0-a4ea-2b0a8bb7fcdf.html

这里讨论过了。
[/Quote]ths
baihacker 2011-10-06
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090119/18/82ddc536-a406-4ef0-a4ea-2b0a8bb7fcdf.html

这里讨论过了。
yjugdujcm 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baihacker 的回复:]
算法1.分别反转两个子段后再反转全部。
算法2.先求出gcd(n, m)设值为d,则这个置换可分解为d个循环。然后分别在这d个循环上做就行了。
[/Quote]第二个没弄明白,能再详细讲下不?
yjugdujcm 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baihacker 的回复:]
算法1.分别反转两个子段后再反转全部。
算法2.先求出gcd(n, m)设值为d,则这个置换可分解为d个循环。然后分别在这d个循环上做就行了。
[/Quote]噢,第一个想法挺好,同样也可以先反转全部,再分别反转两个子段
yjugdujcm 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 yjugdujcm 的回复:]
如题:一个排好序的数组A,长度为n,现在将数组A从位置m(m<n,m已知)分开,并将两部分互换位置,设计一个O(n)的算法实现这样的倒置,只允许使用一个额外空间。 NND,网上都是一个样子,看来都是Copy的,大家有没有什么好的想法,欢迎讨论一下啊
[/Quote]噢,第一个想法挺好,同样也可以先反转全部,再分别反转两个子段
baihacker 2011-10-06
  • 打赏
  • 举报
回复
算法1.分别反转两个子段后再反转全部。
算法2.先求出gcd(n, m)设值为d,则这个置换可分解为d个循环。然后分别在这d个循环上做就行了。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧