社区
数据结构与算法
帖子详情
请教一个简单的问题,谢谢先了!
Mubai
2001-08-02 09:06:06
a[1,n]的前k 个元素及后n-k个元素均为升序排列,现要把整个a[1,n]排为升序。要求时间复杂度为O(n), 并且只能新增O(1)个元素的存储空间
...全文
409
34
打赏
收藏
请教一个简单的问题,谢谢先了!
a[1,n]的前k 个元素及后n-k个元素均为升序排列,现要把整个a[1,n]排为升序。要求时间复杂度为O(n), 并且只能新增O(1)个元素的存储空间
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
34 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
axial
2001-10-20
打赏
举报
回复
当k=1时??是否有解??k任意吗??
Mubai
2001-10-17
打赏
举报
回复
我说这个问题就这么样了吗?就没人。。。。。。。。。。。。。。。。
Mubai
2001-10-10
打赏
举报
回复
to gop:当然有效啊,不过要注意空间复杂度哦。你说出来给大家看看。
gop
2001-10-09
打赏
举报
回复
最多移动2N次的方法有效否,我可以找到
Mubai
2001-10-09
打赏
举报
回复
看来这次我出了个超级难题,呵呵。。。。。。。。。。。什么?你不信?那你写出来看看!在分治算法中,有种线形复杂度的算法,谁懂啊?估计这种方法可以的。
huahao0672
2001-09-27
打赏
举报
回复
想了一段时间觉得可能是无解的。满足了第一个条件但第二个条件又无法满足,而满足了第二个条件又不满足第一个条件。我以前还从来没有研究过这个问题。如果是用归并排序空间复杂度又不满足。而用直接插入时间复杂度又不满足。
不知道有没有来解决这个问题。我愿给他高分。
mathe
2001-09-26
打赏
举报
回复
TO:Mubai, RE:我建议大家可以试试递归与分治法
使用递归会并不可行,所谓空间复杂度是包含使用的堆栈空间的,比如你递归的深度为O(log(n)),那么你使用的空间复杂度已经至少是O(log(n))
huahao0672
2001-09-26
打赏
举报
回复
这个问题不太好办,我回去好好的研究了一下。如果是链表不难,关键是顺序表。这就不好办了。
不知有没有人解决这个问题。
starfish
2001-09-25
打赏
举报
回复
TO:Mubai(木白)
使用常数个控件的算法前面不时有人说出来了么?
我上次发帖子的时候就想到了使用两个元素的空间的算法了,就是和归并排序差不多,你再想想看。
mathe
2001-09-25
打赏
举报
回复
我认为这个题目是无法解决的,凭感觉需要的最小空间是O(log(N)).
不是任何问题都是可以解决的。
huahao0672
2001-09-25
打赏
举报
回复
这个问题有点意思,因为对于顺序表而言关键是将元素后移。我会给也一个令大家满意的算法的。
Mubai
2001-09-25
打赏
举报
回复
我就不信这儿这么多人就没人能做出来?
Mubai
2001-09-08
打赏
举报
回复
to starfish:你说的前面部分很对,你说出了O(N)的概念。而这到题要求只能新增O(1)个元素的存储空间,其实就是说新增的存储空间应该是个常数,而与问题规模n无关。这道题是没有问题的提法是没有问题的。其实这道题是一本算法书上的一道练习题。
Mubai
2001-09-07
打赏
举报
回复
我急啊,怎么没人说话啊?
starfish
2001-09-07
打赏
举报
回复
这个题目出的就有问题,“只能新增O(1)个元素的存储空间”这句话就不对。
首先你搞错了大O符号的用法,
设f(N)和g(N)是定义在正数集上的正函数。
如果存在正的常数C和自然数N0,使得当N >= N0 时有 f(N)<= C*g(N) 。则称函数f(N)当N充分大时上有界,且g(N)是它的一个上界,记为f(N)=Ο(g(N))。这时我们说f(N)的阶不高于g(N)的阶。
举几个例子:
(1)因为对所有的 N >= 1 有 3N <= 4N,我们有3N =Ο(N);
(2)因为当 N >= 1 时有 N + 1024 <= 1025N,我们有 N +1024=Ο(N);
(3)因为当 N >= 10 时有2N^2 + 11N -10 <= 3N^2,我们有2N^2+11N-10 = O(N^2);
(4)因为对所有 N >= 1 有 N^2 <= N^3,我们有 N^2 = Ο(N^3);
(5)作为一个反例 N^3 ≠ Ο(N^2)。因为若不然,则存在正的常数C和自然数N0,使得当N >= N0时有 N^3 <= CN^2,即 N <= C 。显然当取N =max(N0, [C]+l)时这个不等式不成立,所以 N^3 ≠ Ο(N^2)。
所以,f(N) = O(1)的含义是函数f(N)的阶不超过函数 g(N) = 1 的阶, g(N) = 1是一个和N无关的常数函数,任何常数函数都和 g(N) =1 同阶,所以对于任何常数函数其阶都是 O(1)
因此,用了1个变量其空间复杂度是O(1),用了100000000000个变量其空间复杂度还是O(1),只要使用的变量的数目不随着问题的输入规模N变化,其复杂度都是O(1)! 所以上面所有的算法的空间复杂度都是O(1).
laozi
2001-09-07
打赏
举报
回复
你等一等,这道题目我大学上数据结构的时候做过,我现在手头有些事,过两天给你答复。
Mubai
2001-08-31
打赏
举报
回复
完了,这么多人就没有能把这道简单的算法搞出来,还有没有能人啊?
门吹西风
2001-08-21
打赏
举报
回复
pascal里有Break吗?
yanghui88
2001-08-20
打赏
举报
回复
up
林仪明
2001-08-18
打赏
举报
回复
gz
加载更多回复(14)
php gmtime存mysql_有关时间函数gmtime()的
问题
?(急需,
谢谢
先
!)
我的程序结构如下:全局变量structtm*g_CurrentTm;voida(){time_tTimep;time(&Timep);g_CurrentTm=gmtime(&Timep);g_StartDay=(g_CurrentTm->tm_mday);...}voidthread(){time_tTimep;time(&T...
[VB.NET]如何使DataGridView中显示的内容不出现点点点(高手们帮帮忙,
谢谢
先
)
<script type="text/javascript"
急求TWindowsMediaPlayer循环播放的
问题
的
问题
!
急求TWindowsMediaPlayer循环播放的
问题
的
问题
! Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiMultimedia/html/delphi_20060922222216300.html 我想用TWindowsMediaPlayer无限循环播放
一个
媒体文件,当文件播放结束的时候再从头来过,无限次。当我在...
文件读取,读取带空格字符串的
问题
实际工作中,碰到如何读取带空格字符串的
问题
,记录如下: 我用的FILE文件对象,使用fscanf来读内容,文件是
一个
txt文件,每一行要么是数字,要么是汉字或者英文,都是有规律的。 所以,可以用fscanf(file,"%d"...)来读取,没有
问题
。 之前我用fscanf(file,"%s"....)读取字符串的时候,不论是汉字或者是英文,如果字符串是连续的,也没有
问题
。 但是,碰到了带
MaaAssistantArknights:一款智能高效的方舟自动作战工具
《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients.
数据结构与算法
33,025
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章