• 全部
  • 问答

请教一个简单的问题,谢谢先了!

Mubai 2001-08-02 09:06:06
a[1,n]的前k 个元素及后n-k个元素均为升序排列,现要把整个a[1,n]排为升序。要求时间复杂度为O(n), 并且只能新增O(1)个元素的存储空间
...全文
306 点赞 收藏 34
写回复
34 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
加载更多回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2001-08-02 09:06
社区公告
暂无公告