【发布时间】: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