【问题标题】:pseudocode array length or size of affect its running time?伪代码数组的长度或大小会影响其运行时间吗?
【发布时间】:2014-02-20 18:55:24
【问题描述】:

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

我得到 2 个降序排列的数组和 1 个整数 k 然后要求找出2个数组的并集中的第k大数。

我已经运行了我的代码,因为任务截止日期还没有过去,我不能在这里发布代码,对不起。

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

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

感谢您的帮助。多谢。

【问题讨论】:

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


    【解决方案1】:

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

    你应该尽量使用在作业或课堂上提供的尽可能多的信息,并尽可能少做假设。根据我为学校作业编写伪代码的经验,假设获取数组的长度是 O(1) 时间是可以接受的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 2019-05-02
      相关资源
      最近更新 更多