2014-01-29 64 views
0

我被要求编写伪代码并分析我的函数的运行时间。伪码数组长度或大小影响其运行时间?

我给了2个降序排列的数组,和1个整数k ,然后要求找出第2个数组联合中第k个最大数。

我已经运行了我的代码,因为分配管理员没有通过,我不能在这里发布代码,我很抱歉。

存在一定的缺陷, 问题1:我不知道我是否需要如果给2个数组是空的处理像K>总和(arraylen(一& B)) ,或场景的场景......说如果必须,我应该使用什么样的返回值? -1?如果第k个最大值-1完全是......我不确定。

问题2: 当我试图获得阵列的长度中,我使用的sizeof(ArrayA)/ 4,(C++),我的朋友指出: - 一方面,sizeof可能不是的一个分量伪代码,所以我可能需要使用像ArrayA.length() - 另一方面,如果我使用length(),它会使我的算法采取O(n)而不是O(k),因为数组需要去通过自己完全获得长度。他的观点是真实的吗?如果是这样,我应该如何修改我的代码,以便它可能是O(k)? 请帮助,

我感谢任何帮助。非常感谢。

回答

0

请记住,您正在使用伪代码;伪代码不应该看起来像C++。

您应该尝试尽可能多地使用已在作业或课堂中提供的信息,尽可能少地做出假设。根据我为学校作业编写伪代码的经验,假设获取数组长度为O(1)次是可以接受的。

如果你的任务告诉你一个k的范围,但如果没有,你应该像上面提到的那样检查个案。如果k无效,我认为可以提出异常。无论是你还是你可以提到该程序的行为尚未在某些情况下指定。一般来说,如何专门处理作业中未提及的案例并不太重要,但以某种方式处理它们绝对看起来不错。