伪代码数组长度或大小会影响其运行时间吗?

时间:2014-01-29 05:53:24

标签: arrays sorting sizeof pseudocode variable-length-array

我被要求写伪代码并分析我的函数的运行时间。

我得到2个降序排序数组和1个整数k 然后要求找出2个阵列联合中第k个最大的数字。

我已经运行了我的代码,因为分配的duedate还没有通过,我不能在这里发布代码,对不起。

有一些缺陷, 问题1:我不知道是否需要处理k> sum(arraylen(a& b))等场景 ,或者如果给定2个数组是空的情况...说如果我必须,我应该使用什么返回值? -1?如果第k个最大值恰好为-1,那该怎么办......我不确定。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

如果你的作业告诉你一个k的范围会很好,但是如果没有,你应该像你提到的那样检查案件。如果k无效,我认为引发异常是可以接受的。或者你可以提到某些情况下没有指定程序的行为。一般来说,如何专门处理赋值中未提及的案例并不是太关键,但以某种方式处理它们肯定是好的。